关于表格中的行动的困惑

时间:2018-06-02 14:58:38

标签: laravel

我对Laravel相当新,我正在尝试使用Resource Controller进行CRUD操作。我面临的问题是创建任务表单时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和显示的网址为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 :(得分:1)

你在laravel中将action与本机php混淆。

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>

答案 1 :(得分:0)

您只需要指定路线,无需说明文件的实际位置,以便action="/todo"可以正常工作