2017-11-12 2 views
0

개체 저장소에 매핑되는 매개 변수가 포함 된 양식이 있습니다. 템플릿에는 체크 박스 목록과 함께이 매개 변수를 설정하는 폼이 있습니다. 컨트롤러와 템플릿의 동작 개요를 보여줍니다.allowAllProperties의 배경은 무엇입니까, 왜 여기에 필요합니까?

컨트롤러

/** 
* action list 
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Redacted\Productfinder\Domain\Model\Category> $categories 
* @return void 
*/ 
public function searchAction($categories=NULL) { 
    \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(func_get_args()); 
    ... 
} 


템플릿

<f:for each="{categories}" as="option"> 
    <li class="category-{option.uid}" data-filter="{option.uid}"> 
     <label for="checkbox-category-{option.uid}"> 
      <f:form.checkbox name="categories" multiple="true" id="checkbox-category-{option.uid}" value="{option.uid}" checked="{x:condition.iterator.contains(haystack:'{filter.categories}', needle:'{option}', then:'checked')}" /> 
      <span class="title">{option.title} 
     </label> 
    </li> 
</f:for> 


이 지금까지, 매력처럼 작동합니다. 이제 $ categories 매개 변수를 링크로 설정하려고 시도하지만 작동하지 않습니다. 나는 카테고리와 함께 f : for 루프를 가지고있다.

매개 변수를 단일 개체로 설정하면 무시됩니다. 오류 메시지가 없으면 Extbase는 값을 무시합니다.

<f:link.action action="list" arguments="{categories:category}">{category.title}</f:link.action> 


나는 Extbase이 매개 변수가 매핑 할 수없는 것을 알려줍니다 그래서

<f:link.action action="list" arguments="{categories:{0:'{category}'}}">{category.title}</f:link.action> 


같은 그 값을 배열에 매개 변수를 설정합니다.

#1297759968: Exception while property mapping at property path "": It is not allowed to map property "0" 

나는 그렇게

 $propertyMappingConfiguration = $this->arguments->getArgument($property)->getPropertyMappingConfiguration(); 
     $propertyMappingConfiguration->allowAllProperties(); 


처럼 extbase 개체로 원시의 UID를 해결 한 다음 속성 mappging 수 있도록 Extbase에게, 그리고 수, 알아 내기 위해 관리했습니다 나는 좋겠 이것에 대한 배경 지식을 알고 싶습니다. 왜 GET 매개 변수를 허용 할 필요가 있습니까? POST에서만 작동합니다. 제가 잘못된 것을하고 있습니까, 아니면 설계 상입니까?

답변

1

이것은 실제로 설계 상입니다. <f:form.textfield.....을 사용하는 경우 사용자가 원하는 것처럼 설명을 설정하지 않아도됩니다.

누군가가 수동으로 양식을 변경했기 때문에 원하지 않는 항목이 과거/지속 된 것을 방지합니다. 그래서 보안 문제가 있습니다

+0

단일 개체를 매핑하는 매개 변수를 설정하는 것과 어떻게 다른지 이해할 수 없습니까? @param \ Redacted \ Productfinder \ Domain \ Model \ Category $ 카테고리를 링크의 인수로 쉽게 설정할 수 있습니다. ObjectStorage를 통해 여러 값을 가져 오는 이유는 무엇입니까? 두 경우 모두 PropertyMapper가 값을 객체에 매핑합니다. 그게 어떻게 보안을 개선합니까? – j4k3

관련 문제