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'); &lt;form action=" url('StudentController@destroy', $student-&gt;id) " method="POST"&gt;,对于初学者来说。 url('/students', ['id' =&gt; $student-&gt;id]) 并在表格内添加&lt;input type='_method' value='DELETE' /&gt; and &lt;input type="hidden" value="csrf_token()"&gt; 【参考方案1】:

要调用控制器操作,您需要简写为url()-&gt;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的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中的 Blade 模板与普通 php

laravel模板名字是否必须带blade

Laravel Blade 模板引擎会影响性能吗?

Laravel/Blade,内容中的模板内容

Laravel 5.1 Blade模板引擎

Laravel 刀片模板