dt56449492 2016-12-04 16:24
浏览 14
已采纳

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?

  • 写回答

1条回答 默认 最新

  • donglin5770 2016-12-04 17:04
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部