我对Laravel相当新,我正在尝试使用Resource Controller
进行CRUD操作。我面临的问题是创建任务表单时action
应该是什么。让我概述一下应用程序的设计方式。我为MVC创建了单独的目录,如下所示:
路由:Route :: resource('todo','Todo_Controller \ todo_controller');
控制器:
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
答案 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"
可以正常工作