【问题标题】:PHP Symfony Route has some missing mandatory parametersPHP Symfony Route 缺少一些强制参数
【发布时间】:2011-11-04 14:05:00
【问题描述】:

我在使用带有 url_for 方法的对象时遇到问题,我认为这个想法是自动找到任何需要的 parapeters?

The "/publish/:id/:token" route has some missing mandatory parameters (:id, :token).

routing.yml

post_publish:
  url:     /publish/:id/:token
  options:
    model: HookupPost
    type:  object
    method_for_criteria: doSelectOneInactive
  param:   { module: post, action: show }
  requirements:
    id: \d+
    token: \w+
    sf_method: [GET]

newSuccess.php

<?php echo public_path(url_for("@post_publish", $post), true); ?>

其中 $post 由操作传递并包含最近创建的帖子!

有谁知道为什么会出现这个错误?我是不是误会了什么?

谢谢,

【问题讨论】:

    标签: php model-view-controller symfony1 symfony-1.4


    【解决方案1】:

    您缺少 sfDoctrineRoute 声明:

    post_publish:
      url:     /publish/:id/:token
      class:   sfDoctrineRoute
      options:
        model: HookupPost
        type:  object
        method_for_criteria: doSelectOneInactive
      param:   { module: post, action: show }
      requirements:
        id: \d+
        token: \w+
        sf_method: [GET]
    

    然后你可以这样做:

    <?php echo public_path(url_for("post_publish", $post), true); ?>
    

    参考:http://www.symfony-project.org/jobeet/1_4/Doctrine/en/05

    【讨论】:

      【解决方案2】:

      试试:

      <?php echo public_path(url_for("post_publish", 
              array( 'id' => $post->id, 'token' => $post->token )), true); ?>
      

      或类似的东西,取决于你的Post 类。

      【讨论】:

      • 这有点违背传递对象的意义,所以我可以稍后修改路线
      • 主要目标是把@去掉。 :D
      猜你喜欢
      • 1970-01-01
      • 2021-04-02
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多