2015-05-19 63 views
1

尝试获取以下表单的URL以正确填充。一段时间以来一直困扰着这个,所以在这里寻求一些帮助。Laravel 5表单URL创建

从以下代码可以看出,我打开表单 - 绑定模型 - 并尝试动态设置URL。完整的URL类似于{username}/account/cards/id,所以我需要将它传递给用户名(我想通过认证的用户(因为他们只能访问自己的页面)以及卡,他们正试图更新。

{!! Form::model($card, ['method' => 'PATCH', 'action' => 'Account\[email protected]', array(Auth::user()->username, $card->id) ]) !!} 

现在,这一切发生在刀片(前端),所以不是100%我在做什么错了。我已经试过行动,网址,路线......我不能让任何工作出于某种原因错误我正在这一个具体是一个数组字符串错误但如果我不能建立一个数组我如何传递多个变量所以这里有点困惑

任何帮助将不胜感激。

感谢

CITTI

+0

您是否尝试过使用'route()'helper?所以你的代码看起来像这样:'action'=> route('card_update_route',['username'=> Auth :: user() - > username,'id'=> $ card-> id])' –

+0

{! Form :: model($ card,['method'=>'PATCH','action'=> route('{username} .account.cards.update',['username'=> Auth :: user() - > username,'cards'=> $ card-> id])])!!} 获取以下错误: UrlGenerator.php中的ErrorException行540: Action App \ Http \ Controllers \ http:// dev .newsite.com/citti/account/cards/1未定义。 – Citti

回答

2

这是我以前回答的更新。你可以试试这个:

{!! Form::model($card, ['method' => 'PATCH', 'action' => [ 'Account\[email protected]', Auth::user()->username, $card->id] ]) !!} 
+0

是的,它能够创建正确的URL,但是这在表单助手的上下文中不起作用。 card'['method'=>'PATCH','action'=> route('update_account_card',['username'=> Auth :: user() - > username,'cards'=> $ card-> id] )])!!} 抛出一个未定义的和invalidargumentexception – Citti

+0

我更新了我的答案,试试那一个 –

+0

就是这样,现在我试图想想你的原始答案,所以我可以看到我做错了什么。我想你只是用数组()包装了,不管现在这个工作是否完美,谢谢你的帮助! – Citti

0

你只是通过你的路由参数作为一个选项Form::model标签,而不是路线。尝试:

{!! Form::model($card, ['method' => 'PATCH', 'action' => [ 'Account\[email protected]', [Auth::user()->username, $card->id] ] ]) !!} 

如果您仍然遇到问题,我建议你的名字你的路线和引用的动作命名的路线。

+0

对于更复杂的行为,最好的做法是为您的路线命名?只是好奇。一直在阅读初级教程,他们从来没有真正触及任何这些。 – Citti

+0

仍然出现以下错误:助手中的ErrorException。php line 546: 数组到字符串转换(查看: – Citti

0

如果我没有记错,动作应该是一个数组,如果你传递变量通过控制器。例如:

{!! Form::model($card, array('method' => 'PATCH', 'action' => array('Account\[email protected]', 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')