Laravel 5 形成 URL 创建
Laravel 5 form URL creation
正在努力使以下表单的 URL 正确填充。纠结了一段时间所以在这里寻求帮助。
正如您从以下代码中看到的,我正在打开表单 - 绑定模型 - 并尝试动态设置 URL。完整的 URL 类似于 {username}/account/cards/id 所以我需要将用户名传递给它(我想将其传递给经过身份验证的用户(因为他们只能访问自己的页面)和他们正在尝试更新的卡的 ID。
{!! Form::model($card, ['method' => 'PATCH', 'action' => 'Account\CardsController@update', array(Auth::user()->username, $card->id) ]) !!}
现在这一切都发生在 blade(前端)所以我做错的不是 100%。我已经尝试过行动,url,路线......由于某种原因我无法进行任何工作。我在这个问题上遇到的错误是数组到字符串的错误。但是,如果我无法构建数组,我该如何传递多个变量呢?所以这里有点困惑。
如有任何帮助,我们将不胜感激。
谢谢
花旗
您只是将路由参数作为选项传递给 Form::model
标记,而不是路由。尝试:
{!! Form::model($card, ['method' => 'PATCH', 'action' => [ 'Account\CardsController@update', [Auth::user()->username, $card->id] ] ]) !!}
如果您仍然遇到问题,我建议您命名您的路线并在操作中引用命名的路线。
这是对我之前回答的更新。你可以试试这个:
{!! Form::model($card, ['method' => 'PATCH', 'action' => [ 'Account\CardsController@update', Auth::user()->username, $card->id] ]) !!}
如果我没记错的话,如果您将变量传递给控制器,操作应该是一个数组。例如:
{!! Form::model($card, array('method' => 'PATCH', 'action' => array('Account\CardsController@update', Auth::user()->username, $card->id))) !!}
不确定您是否使用 Larvel Collective HTML 和 Forms,但它们与 Laravel 版本本质上相同。此页面:http://laravelcollective.com/docs/5.0/html#form-model-binding 解释了有关您的特定用例的更多信息。
希望对您有所帮助。
P.S。尝试添加:
{!! Form::hidden('_method', 'PATCH') !!}
...在打开标签下方而不是在其中。这与 L5 方法欺骗有关,我相信对于任何不是 'POST' 或 'GET' 的东西通常都是必需的。 (即 'PUT'、'PATCH' 和 'DELETE')
正在努力使以下表单的 URL 正确填充。纠结了一段时间所以在这里寻求帮助。
正如您从以下代码中看到的,我正在打开表单 - 绑定模型 - 并尝试动态设置 URL。完整的 URL 类似于 {username}/account/cards/id 所以我需要将用户名传递给它(我想将其传递给经过身份验证的用户(因为他们只能访问自己的页面)和他们正在尝试更新的卡的 ID。
{!! Form::model($card, ['method' => 'PATCH', 'action' => 'Account\CardsController@update', array(Auth::user()->username, $card->id) ]) !!}
现在这一切都发生在 blade(前端)所以我做错的不是 100%。我已经尝试过行动,url,路线......由于某种原因我无法进行任何工作。我在这个问题上遇到的错误是数组到字符串的错误。但是,如果我无法构建数组,我该如何传递多个变量呢?所以这里有点困惑。
如有任何帮助,我们将不胜感激。
谢谢
花旗
您只是将路由参数作为选项传递给 Form::model
标记,而不是路由。尝试:
{!! Form::model($card, ['method' => 'PATCH', 'action' => [ 'Account\CardsController@update', [Auth::user()->username, $card->id] ] ]) !!}
如果您仍然遇到问题,我建议您命名您的路线并在操作中引用命名的路线。
这是对我之前回答的更新。你可以试试这个:
{!! Form::model($card, ['method' => 'PATCH', 'action' => [ 'Account\CardsController@update', Auth::user()->username, $card->id] ]) !!}
如果我没记错的话,如果您将变量传递给控制器,操作应该是一个数组。例如:
{!! Form::model($card, array('method' => 'PATCH', 'action' => array('Account\CardsController@update', Auth::user()->username, $card->id))) !!}
不确定您是否使用 Larvel Collective HTML 和 Forms,但它们与 Laravel 版本本质上相同。此页面:http://laravelcollective.com/docs/5.0/html#form-model-binding 解释了有关您的特定用例的更多信息。
希望对您有所帮助。
P.S。尝试添加:
{!! Form::hidden('_method', 'PATCH') !!}
...在打开标签下方而不是在其中。这与 L5 方法欺骗有关,我相信对于任何不是 'POST' 或 'GET' 的东西通常都是必需的。 (即 'PUT'、'PATCH' 和 'DELETE')