url yii2中的嵌套控制器和操作
I have a database with tables teams, with fields id and name, and players with fields id, team_id and name. I want to create records in the players table AFTER I create a record in the teams table.
For example, I create a team, go to edit - the URL look like this: /teams/update?id=1
. In the edit section, there is link with text add player, which is associated with a controller Players Controller. Now the URL of Players Controller looks like /players/create
(in the create section) but I want it to be /1/players/create
, where 1 corresponds to the team_id value. How can I achieve this?
我有一个包含表 teams em>的数据库,其字段为 id em >和名称 em>和播放器 em>,其中包含字段 id em>, team_id em>和名称 em>。 我想在 teams em>表中创建记录后,在 player em>表中创建记录。 p>
例如,我创建了一个团队,转到编辑 em> - URL如下所示: / teams / update?id = 1 code >。 在编辑部分,有文本添加播放器 em>的链接,该文本与控制器播放器控制器 em>相关联。 现在 Players Controller em>的URL看起来像
/ players / create code>(在创建部分中),但我希望它是
/ 1 / players / create code >,其中1对应于 team_id em>值。 我怎样才能做到这一点? p>
div>
Add two rules in the urlManager setting.
'rule' => [
...
"<id:\d+>/<module:\w+>/<controller:\w+>/<action:\w+>"=>"<module>/<controller>/<action>",
"<id:\d+>/<controller:\w+>/<action:\w+>"=>"<controller>/<action>"
]
Left side of the equal is pattern, right side of the equal is the route
The id in "< id:\d+ >" means that the arguments to the action like this
public function actionCreate($id)
So you can change "id" to "teams_id"
"< module:\w+ >" means that match all modules, the other two modes are the same
Read more: urlmanager-rules-detail