2013-04-22 8 views
20

誰かがLaravel 4 UrlGeneratorクラスの構文を説明できますか?私はドキュメントでそれを見つけることができません。Laravel 4:Urlクラスに渡すパラメータは何ですか?

私は次のルートがあります。私は見

http://localhost/l4/public/users/123 

{{ Url::action('[email protected]', ['users' => '123']) }} 

希望HTMLを生成します。それは、このことを理解するために私に長い時間がかかった

Route::resource('users', 'UsersController'); 

をUrlGenerator.php

/** 
* Get the URL to a controller action. 
* 
* @param string $action 
* @param mixed $parameters 
* @param bool $absolute 
* @return string 
*/ 
public function action($action, $parameters = array(), $absolute = true) 

..しかし、それは本当に私をさらにもたらしません。

$parametersとして渡すことはできますか?

私は今、['users' => '123']が動作することを知っていますが、これの背景は何ですか?そして、データを渡す他の方法はありますか?

答えて

20

実際には、パラメータの名前を配列のキーとして指定する必要はありません。私が覚えている限り、名前が与えられていなければ、左から右に置き換えられます。

例として、あなたのリソースコントローラルート定義は次のようなものになります。だから、

/users/{users} 

を、URL::action('[email protected]', ['123'])のように生成されたURLは、それはあなたのために既に持っている多くのように、URL localhost/project/public/users/123を生成します。

あなたが渡しているのは、URLを正しく生成するために必要なパラメータです。リソースがネストされている場合、定義は次のようになります。

/users/{users}/posts/{posts} 

URLを生成するには、ユーザーIDと投稿IDの両方を渡す必要があります。

URL::action('[email protected]', ['123', '99']); 

URLはPHP 5.3を使用してそれらのためにlocalhost/project/public/users/123/posts/99

+0

ありがとう!それは何かを明らかにする。理由は私が "私の構文"は私が試したことが見つかりました: {{Url :: action( 'UsersController @ show'、['id' => '123']}}} ..そしてそれは "いくつかの必須パラメータルート "users.show"のURLを生成するためのユーザー( "users")がありません。 " 私はあなたのことを試して、それは動作します!ありがとう! – Dirk

+1

私は再度開いた.. HtmlBuilderのために同じ質問があるので... {{Html :: linkAction( 'UsersController @ show'、['123'])}} ..「一部の必須パラメータには、 users.show " これについて何をすべきか知っていますか?ありがとう! 編集:nevermind ... HtmlBuilderはタイトルを2番目のパラメータとし、3番目のユーザーIDはこの特定のケースでは – Dirk

+0

です。 –

3

ようになり、これは次のようになります。

URL::action('[email protected]', array('123')) 
11

まあリソースを扱う際のURLを生成する良い方法があります。

URL::route('users.index') // Show all users links to [email protected] 

URL::route('users.show',$user->id) // Show user with id links to [email protected]($id) 

URL::route('users.create') // Show Userform links to [email protected] 

URL::route('users.store') // Links to [email protected] 

URL::route('users.edit',$user->id) // Show Editform links to [email protected]($id) 

URL::route('users.update',$user->id) // Update the User with id links to [email protected]($id) 

URL::route('users.destroy',$user->id) // Deletes a user with the id links to [email protected] 

希望をクリアすること。いくつかのドキュメントはこちらをご覧くださいhttp://laravel.com/docs/controllers#resource-controllers

関連する問題