2012-10-15 45 views
1

我有2個實體:用戶和位置。Symfony2樹枝形式失敗,嵌套對象

namespace mk\MyBundle\Entity; 

use mk\MyBundle\Entity\Location; 

class User 
{ 
    protected $user_id; 
    protected $first_name; 
    protected $last_name; 
    protected $location; 
} 

namespace mk\MyBundle\Entity; 

class Location 
{ 
    public $country_id; 
    public $country_name; 
    public $state_id; 
    public $state_name; 
    public $city_id; 
    public $city_name; 
} 

我存儲用戶的作爲位置的對象位置,適當的變量內。

在個人資料編輯頁面,我在那裏的位置是使用嵌套調用對象的顯示準備FormType類用戶類型的:

$builder->add('location.country_id', 'country') 

,當我使用與普通{{form_rest(表)}}一切好了,但是當我想直接解決的東西,如:

{{ form_widget(form.location.country_id) }} 

嫩枝引發我一個錯誤:方法「位置」對象「的Symfony \分量\表格\ FormView控件」不MyBundle存在:用戶:第69行的profile.html.twig

我做錯了什麼? 在此先感謝。

更新

+0

您是否找到解決方案? – pagliuca

回答

1

,因爲你調用方法「位置」對象的FormView它的失敗。但是你想從表單中調用一個方法。

你應該嘗試

{{ form_widget(form.location.country_id) }} 

希望它的工作:)

+0

對不起。這是我的不好。當然,我在form.location.country_id上調用它,只是在這裏輸入錯誤。 –

0

也許你發現了其間的解決方案,但讓我回答這個問題以供將來參考幫助別人。

對於我來說目前還不清楚你使用的是哪個版本的symfony2,但是我的解決方案應該可以在Symfony 2.0以上使用。

首先,包含.的表單字段名稱在symfony2中是非法的。

The name "location.id" contains illegal characters. Names should start with a letter, digit or underscore and only contain letters, digits, numbers, underscores ("_"), hyphens ("-") and colons (":"). 

做這種方式來代替:在你的xtype :: buildForm(...)函數中使用property_path option

$builder->add('this_is_a_valid_name_you_can_choose', 
       'text', // yourtype 
       array(
        'property_path' => 'location.country_id', 
      )); 

這應該做的伎倆,你的領域是枝訪問由{{ form_widget(this_is_a_valid_name_you_can_choose) }}

對於舊版本,我看到一些人使用path選項,但我從來沒有發現這種記錄。

+0

感謝您的回答。明天會看看。 –