Работая с Yii 2.0.4, я пытаюсь использовать правило urlManager для предварительной загрузки объекта на основе заданного идентификатора в URL-адресе.
конфиг/веб.php
'components' => [
'urlManager' => [
[
'pattern' => 'view/<id:\d+>',
'route' => 'site/view',
'defaults' => ['client' => Client::findOne($id)],
],
[
'pattern' => 'update/<id:\d+>',
'route' => 'site/update',
'defaults' => ['client' => Client::findOne($id)],
],
]
]
Если это сработает, не нужно будет каждый раз вручную находить и возражать для некоторых действий CRUD:
class SiteController extends Controller {
public function actionView() {
// Using the $client from the urlManager Rule
// Instead of using $client = Client::findOne($id);
return $this->render('view', ['client' => $client]);
}
public function actionUpdate() {
// Using $client from urlManager Rule
// Instead of using $client = Client::findOne($id);
if ($client->load(Yii::$app->request->post()) && $client->save()) {
return $this->redirect(['view', 'id' => $client->id]);
} else {
return $this->render('edit', ['client' => $client]);
}
}
}
ПРИМЕЧАНИЕ. Приведенные выше фрагменты кода не работают. Это идея того, что я хочу получить
Является ли это возможным? Есть ли способ добиться этого?
beforeAction()
. Я попробую, и опубликую здесь решение. 28.07.2015