Маршрут PHP Symfony имеет некоторые отсутствующие обязательные параметры

#php #model-view-controller #symfony1 #symfony-1.4

#php #model-view-controller #symfony1 #symfony-1.4

Вопрос:

У меня возникла проблема с использованием объекта с методом url_for, я думал, что идея заключалась в том, что какие-либо требуемые параметры были найдены автоматически?

 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 передается действием и содержит недавно созданный post!

Кто-нибудь знает, почему возникает эта ошибка? Я что-то неправильно понял?

Спасибо,

Ответ №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 класса.

Комментарии:

1. Это как бы противоречит смыслу передачи объекта, поэтому я могу изменить маршрут позже

2. Основной целью было удаление @ out. : D