Laravel Blade 模板 Form::open() 到 Html
Posted
技术标签:
【中文标题】Laravel Blade 模板 Form::open() 到 Html【英文标题】:Laravel Blade template Form::open() to Html 【发布时间】:2019-02-28 00:34:56 【问题描述】:我正在学习有关 Laravel 的教程。
但是,我想将刀片模板Form::open()
转换为 html/php 形式,以便于阅读和理解。
这是 Blade 模板:
Form::open(['action'=> ['StudentController@destroy', $student->id], 'method'=>'POST'])
method_field('DELETE')
Form::submit('Delete',['class'=>'btn btn-danger'])
Form::close()
我需要将刀片代码转换为 html/php 我试了很多次,就是这样。但失败。
<form action="url('StudentController@destroy', $student->id)" method="POST">
<?php method_field('Delete'); ?>
<button class="btn btn-danger" type="submit">Delete</button>
</form>
有人知道正确的 html/php 格式吗?
[编辑] 路线:列表
【问题讨论】:
我使用的是 5.5 版 你能告诉我你的路线吗 routes/web/ 就像这样 "Route::resource('student', 'StudentController');<form action=" url('StudentController@destroy', $student->id) " method="POST">
,对于初学者来说。
url('/students', ['id' => $student->id])
并在表格内添加<input type='_method' value='DELETE' /> and <input type="hidden" value="csrf_token()">
【参考方案1】:
要调用控制器操作,您需要简写为url()->action(...)
(或action()
)。
<form action="url()->action('StudentController@destroy', ['id'=>$student->id])" method="POST">
@csrf
method_field('DELETE');
<button class="btn btn-danger" type="submit">Delete</button>
</form>
这在the manual中也有描述
【讨论】:
感谢一开始说“过期页面”时出错,但是当我添加“@csrf”时它起作用了,我也将“ method_field() ”更改为 使其全部为 html【参考方案2】:在表单上的“操作”中,您需要将任何辅助函数括在括号中,以便 Blade 知道如何处理它,否则,它只是文本。
另外请注意,我删除了 'method_field' 并将其替换为隐藏字段,因为这本质上是 method_field
助手创建的。
<form action="route('StudentController@destroy', ['id' => $student->id])" method="POST">
<input type='hidden' value='DELETE'>
<button class="btn btn-danger" type="submit">Delete</button>
</form>
如果使用 route
助手不起作用,您可以对表单标签的“动作”参数使用更简单的方法:
<form action="/student/destroy/$student->id" method="POST">
【讨论】:
它把我送到了这个网址“laravelone.me/StudentController@destroy/7”, @Van,我已经更新了代码以使用route
助手,试一试,让我知道你会发生什么。
它说“路线 [StudentController@destroy] 未定义。
如上所述,然后附上您的 routes.php 文件的结构/代码,以便我们可以看到我们正在处理的内容。
@Van put php artisan route:list
并将其附加到您上面的代码中。【参考方案3】:
你应该使用这个代码
<form action=" url('StudentController@destroy', $student->id) " method="POST">
<input type='_method' value='DELETE' />
<button class="btn btn-danger" type="submit">Delete</button>
</form>
【讨论】:
我更新了代码,如果有任何问题请尝试告诉我 "laravelone.me/StudentController@destroy/2" 它把我发到这里,在教程中它被发送到 "laravelone.me/Students/7" 运行 php artisan route:list 并首先检查您的路线名称并与我分享 这个? "删除 | students/student | students.destroy | App\Http\Controllers\StudentController@destroy | web"【参考方案4】:试试这个方法
使用 并使用
route
<form action="route('StudentController@destroy', ['id'=>$student->id])" method="POST">
<?php method_field('Delete'); ?>
<button class="btn btn-danger" type="submit">Delete</button>
</form>
【讨论】:
以上是关于Laravel Blade 模板 Form::open() 到 Html的主要内容,如果未能解决你的问题,请参考以下文章