symfony2를 사용하여 form_rest()가 필드를 표시하지 않도록 하려면 어떻게 해야 합니까?
Symfony2를 사용하기 시작했는데 문제가 좀 있어요.수동으로 필드를 렌더링하고 싶었지만 아직 내가 렌더링한 필드가 다음 텍스트와 함께 표시되므로 작동하지 않습니다.form_rest()
두 개의 동일한 필드가 있습니다.
제 코드는 다음과 같습니다.
<div>
{{ form_errors(form.contenu) }}
<textarea id="{{ form.contenu.vars.id }}" name="{{ form.contenu.vars.full_name }}">{{ form.contenu.vars.value }}</textarea>
</div>
그리고, 용지의 마지막에, 다음과 같이 기입할 필요가 있습니다.
{{ form_rest(form) }}
단, "contenu" 필드가 표시됩니다.
뭐가 문제인지 아세요?
다른 옵션은 필드를 렌더링된 것으로 명시적으로 표시하는 것입니다.
{% do form.contenu.setRendered %}
내 생각에 덜 진부한 또 다른 방법은 다음과 같다.
{{ form_widget(form._token) }} // render the CSRF Token
{{ form_end(form, {'render_rest': false}) }} // do not render anything else
공식 문서(v3.0)에서 가져온 것이므로 거의 베스트 프랙티스라고 생각합니다.
{{ form_rest(form) }}
각 필드를 "마지막"으로 렌더링한 후 맨 마지막에 이동합니다.CSRF 토큰에 사용하고 있는 경우는, 항상 다음과 같이 렌더링 할 수 있습니다.
{# Token CSRF #}
{{ form_widget(form._token) }}
일부 필드를 표시하지 않으려는 상황은 형식이 잘못 설계되었음을 나타냅니다.몇 가지 논거를 삽입할 수 있습니다.__construct
조건부로 하거나(예를 들어 일부 필드를 포함/삭제하거나) 개별 필드를 생성할 수 있습니다.Form
수업(내 생각에 그건 좀 과잉인 것 같아)
몇 달 전만 해도 사용자가 레코드를 삽입/갱신할 때 양식이 다른 경우가 있었습니다.이런 식이었죠.
...
public function __construct($isUpdateForm){
$this->isUpdateForm= $isUpdateForm;
}
public function buildForm(FormBuilder $builder, array $options){
....
$builder->add('some_filed', 'text', ..... );
if ( $this->isUpdateForm ){
$builder->add(.....);
}
....
}
....
어떤 이유로 폼클래스를 리팩터링할 수 없는 경우에도 불필요한 필드를 표시할 수 있지만 다음 항목으로 압축할 수 있습니다.<div>
CSS가 있는display:none
기여하다.이렇게 하면 "그들이 아직 거기에 있다" (그리고 모든 수단을 통해 정상적으로 처리된다) 그러나 사용자에게는 보이지 않습니다.
이게 도움이 되길...
언급URL : https://stackoverflow.com/questions/10570002/how-to-make-form-rest-not-display-a-field-with-symfony2
'programing' 카테고리의 다른 글
자바처럼 C#에 shrows 키워드가 있나요? (0) | 2022.09.22 |
---|---|
Python 문자열을 공백으로 채우려면 어떻게 해야 하나요? (0) | 2022.09.22 |
브라우저 창이 아래로 스크롤되는지 여부를 감지하는 방법 (0) | 2022.09.22 |
Mac에서 Java로 프로그램을 컴파일하고 실행하려면 어떻게 해야 합니까? (0) | 2022.09.22 |
데이터 URI를 사용할 때 권장 파일 이름을 지정할 수 있는 방법이 있습니까? (0) | 2022.09.22 |