dt56449492 2016-12-05 00: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-05 01: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

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

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分