Подтвердить что ты не робот

Laravel 4: Что передать в качестве параметров классу Url?

Может кто-нибудь объяснить синтаксис класса Laravel 4 UrlGenerator? Я не могу найти его в документации.

У меня есть следующий маршрут:

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

Мне потребовалось много времени, чтобы понять, что это:

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

генерирует желаемый html:

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

Я посмотрел в 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'] работает, но каков фон этого? Есть ли другие способы передачи данных?

4b9b3361

Ответ 1

На самом деле вам не требуется указывать имя параметра в качестве ключа массива. Насколько я помню, замены будут происходить слева направо, если имена не указаны.

В качестве примера, определение маршрута вашего контроллера ресурсов будет выглядеть примерно так:

/users/{users}

Итак, URL-адрес, сгенерированный как URL::action('[email protected]', ['123']), будет генерировать URL localhost/project/public/users/123, как это уже было для вас.

Так что вы передаете параметры, необходимые для правильного создания URL-адреса. Если ресурс был вложен, определение может выглядеть примерно так.

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

Чтобы создать URL-адрес, вам необходимо передать идентификатор пользователя и идентификатор сообщения.

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

URL-адрес будет выглядеть примерно так: localhost/project/public/users/123/posts/99

Ответ 2

Ну, есть лучший способ генерации 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

Ответ 3

Для тех, кто использует PHP 5.3, это должно быть:

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