2012-06-20 2 views
1

Symfony 응용 프로그램에는 두 개의 모델이 있습니다.동일한 들여 쓰기에서 symfony 1.4 임베디드 양식 필드

Blog: 
    columns: 
    name: { type: string(20), notnull: true, unique: true } 
    title: { type: string(255), notnull: true } 
    description: { type: string(255), notnull: true } 
    admin_id: { type: bigint, notnull: true } 
    relations: 
    User: 
     class: sfGuardUser 
     local: admin_id 
     ... 

이 모델은 sfGuardUser와 일대일 관계를 가지고 볼 수 있듯이 : 첫 번째 블로그입니다. 나는이 두 곳의 등록이 한 가지 형태로 이루어지기를 바란다.

그래서 BlogForm 클래스를 변경하고 embeddedRelation 메서드를 사용했습니다. 따라서 두 가지 형태가 함께 나타납니다. 문제는 그들의 의견입니다! BlogForm에 포함 된 사용자 등록 양식은 아이처럼 보입니다! 나는 이것을 원하지 않는다. 나는 들판을 같은 들여 쓰기로하고 싶다.

My Current View

하지만이 같은 싶지 :

내 폼보기는 다음과 같이이다

enter image description here

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? FormFormatter와 관련이 있습니까?

+0

가능한 복제본 http://stackoverflow.com/questions/11085965/removing-table-headers-from-embedrelation? – j0k

답변

1

sfWidgetFormSchemaFormatter 또는 render* method을 확인하셨습니까?

거의 비슷한 내용의 대답을했습니다. here. 그리고 나는 여기에 온 것과 거의 같은 문제라고 생각합니다 :

가장 좋은 방법은 sfWidgetFormSchemaFormatter 또는 render * 메소드를 사용하여 수동으로 템플릿에 양식을 작성하는 것입니다.


편집 :

(lib/widget/sfWidgetFormSchemaFormatterAc2009.class.php에서)이 같은 사용자 정의 포맷터를 추가하려고 제가 here 대답했습니다에 대해서는 그런 다음

class sfWidgetFormSchemaFormatterAc2009 extends sfWidgetFormSchemaFormatter 
{ 
    protected 
    // this will remove table around the embed element 
    $decoratorFormat = "%content%"; 

    public function generateLabel($name, $attributes = array()) 
    { 
    $labelName = $this->generateLabelName($name); 

    if (false === $labelName) 
    { 
     return ''; 
    } 

    // widget name are usually in lower case. Only embed form have the first character in upper case 
    if (preg_match('/^[A-Z]/', $name)) 
    { 
     // do not display label 
     return ; 
    } 
    else 
    { 
     return $this->widgetSchema->renderContentTag('label', $labelName, $attributes); 
    } 
    } 
} 

을 당신의 폼에 추가 ProjectConfiguration :

class ProjectConfiguration extends sfProjectConfiguration 
{ 
    public function setup() 
    { 
    // ... 

    sfWidgetFormSchema::setDefaultFormFormatterName('ac2009'); 
    } 
} 

(정보는 sf website에서 제공)

이 방법으로 해결되지 않으면 if (preg_match 앞에 var_dump($name);을 추가하고 결과를 질문에 추가하십시오.

+0

답장을 보내 주셔서 감사합니다.하지만 수동으로하고 싶지는 않습니다. 그런데 FormFormatter에서 삽입 된 양식의 헤더가 에코되는 것을 어떻게 방지 할 수 있습니까? –

+0

그렇지 않으면 다르게 대답했을 것입니다. – j0k

+0

저는 제 대답을 업데이트했습니다. – j0k