2011-03-22 51 views
1

我在Symfony 1.4中有一個button_to組件,它調用一個接收參數(slug)的路由。但是我無法讓Symfony識別我發送的參數。我已經用link_to嘗試了同樣的事情,它工作正常。symfony button_to傳遞參數

這裏是我的代碼:

的routing.yml

entry_show: 
    url:    /entry/:slug 
    class:    sfDoctrineRoute 
    options: 
    model:   ProjectEntry 
    type:    object 
    method:   getEntryBySlug 
    param:    { module: entry, action: show } 

模板:

<?php echo button_to('ButtonName', 'entry_show', array('slug' => 'this-is-my-slug')) ?> 

入門型號:

public function getEntryBySlug($parameters) 
{ 
    return $this->findOneBySlug($parameters['slug']); 
} 

我得到的是以下500錯誤:

The "/entry/:slug" route has some missing mandatory parameters (:slug).

我也曾嘗試與改變模板代碼:

<?php echo button_to('ButtonName', 'entry_show?' . 'slug='.'this-is-my-slug') ?> 

但無濟於事......

什麼想法?

回答

1

試試這個:

<?php echo button_to('ButtonName', '@entry_show?slug=this-is-my-slug') ?> 

您需要的@符號綁定到路由配置具名的路線,並且參數slug是URI參數的一部分,而不是button_to函數的第三個參數。

+0

哇!工作!謝謝! – 2011-03-22 21:28:33

0

您是否嘗試爲slug參數設置默認值?

param:    { module: entry, action: show, slug: default-slug } 
+0

我只是想這一點,但它並沒有任何區別。再次,用的link_to它的工作原理。如果我發送一個值,那麼在路由配置中有什麼值與默認值? – 2011-03-22 19:15:25

+0

由於一些谷歌搜索後,我發現一些論壇主題告訴,在這種情況下,缺少參數的默認值,我希望它能解決您的問題:http://oldforum.symfony-project.org/index.php/m/74351/ – 2011-03-22 19:30:40

+0

謝謝,讓我看看線程,也許我會找到那裏的東西... – 2011-03-22 19:48:20