Путаница в отношении действий в форме - PullRequest
0 голосов
/ 02 июня 2018

Я довольно новичок в Laravel и пытаюсь использовать операции CRUD, используя Resource Controller.Проблема, с которой я сталкиваюсь, связана с тем, что должно быть action в форме создания задачи.Позвольте мне дать вам общее представление о том, как приложение разработано.Я создал отдельные каталоги для MVC, как указано ниже:

  • Todo_Model \ todo_model.php
  • Todo_Controller \ todo_controller.php
  • Todo_View \ home.blade.php
  • Todo_View \ create.blade.php

Маршрут: Route :: resource ('todo', 'Todo_Controller \ todo_controller');

маршрут: список enter image description here

Контроллер:

 public function index()
    {
        return view('Todo_View\home');
    }


    public function create()
    {
        return view('Todo_View\create');
    }


    public function store(Request $request)
    {
        $todo= new todo_model();
        $todo->title=$request->title;
        $todo->body=$request->body;
        $todo->save();
        return redirect('todo');

    }

create.blade.php

<form method="POST" action="../todo">
            {{csrf_field()}}
            <tr><td><input type="text" name="title" value="" placeholder="Title"></td></tr>
            <tr><td><input type="text" name="body" value="" placeholder="Body"></td></tr>
            <tr><td><input type="submit" name="submit" value="Submit"></td></tr>
 </form>

Теперь проблема в том, что action формыдолжно быть todo, как можно видеть в route:list, но когда я нажимаю «отправить» с этим, я получаю MethodNotAllowedHttpException, а отображаемый URL-адрес - http://localhost/laravel-7/blog/public/todo/todo.Но во время удара и испытания я понял, что должен использовать действие формы как ../todo.Я очень озадачен тем, почему я должен использовать это действие, поскольку оно не имеет никакого смысла, потому что в списке маршрутов URI четко упоминается как todo

Другой момент, когда я нажимаю на страницу индексаURI равен http://localhost/laravel-7/blog/public/todo, и когда меня перенаправляют с домашней страницы для создания страницы, URI равен http://localhost/laravel-7/blog/public/todo/create

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Вам просто нужно точно указать маршрут, чтобы не было необходимости указывать, где на самом деле находится файл, поэтому action="/todo" будет работать нормально

0 голосов
/ 02 июня 2018

Вы путаете action с нативным php в laravel.

Замените ваш action="../todo" на action="{{url('todo')}}"

<form method="POST" action="{{url('todo')}}">
            {{csrf_field()}}
            <tr><td><input type="text" name="title" value="" placeholder="Title"></td></tr>
            <tr><td><input type="text" name="body" value="" placeholder="Body"></td></tr>
            <tr><td><input type="submit" name="submit" value="Submit"></td></tr>
 </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...