Php 按第一个字符筛选数据-Typo3/Extbase插件
我必须做一个typo3扩展,在下拉菜单中显示街道。 现在我需要在顶部从a到Z进行分页 单击这些链接,然后必须过滤掉以相应字符开头的街道。我试图在城市控制器调用中执行Php 按第一个字符筛选数据-Typo3/Extbase插件,php,model-view-controller,typo3,extbase,Php,Model View Controller,Typo3,Extbase,我必须做一个typo3扩展,在下拉菜单中显示街道。 现在我需要在顶部从a到Z进行分页 单击这些链接,然后必须过滤掉以相应字符开头的街道。我试图在城市控制器调用中执行listByChar操作 $cities=$this->cityRepository->findByChar()但我不知道如何将字符作为参数传递。。我希望通过使用uri viewhelper可以实现这一点 () 这就是我在节目中展示/处理街道的方式。html: <select onchange="location = this.
listByChar
操作$cities=$this->cityRepository->findByChar()代码>
但我不知道如何将字符作为参数传递。。我希望通过使用uri viewhelper可以实现这一点
(
)
这就是我在节目中展示/处理街道的方式。html:
<select onchange="location = this.options[this.selectedIndex].value;">
<option>Straße auswählen</option>
<f:for each="{city.streets}" as="street">
<option value="<f:uri.action controller="Street" action="show" arguments="{street : street}" />" >{street.name}</option>
</f:for>
</select>
/类/domain/repository/CityRepository.php
public function findByChar($char){
*** I yet didn't figure this part out either :C
}
正如您正确预期的那样,您可以将char作为uri.action viewhelper的参数传递。由于您只需要街道名称的第一个字符,请使用f:format.crop
show.html:
<select onchange="location = this.options[this.selectedIndex].value;">
<option>Straße auswählen</option>
<f:for each="{city.streets}" as="street">
<option value='<f:uri.action controller="Street" action="show" arguments="{char : \"{street.name -> f:format.crop(maxCharacters: 1, append: '')}\"}" />' >{street.name}</option>
</f:for>
</select>
/class/domain/repository/StreetRepository。php:
public function findByChar($char){
$query = $this->createQuery();
$query->matching($query->like('name', $char . '%'));
return $query->execute();
}
我试着编辑它让它在我需要的时候工作。。。但我设法归档的只是指向白页的链接:(当我将例如“A”作为参数传递时,我能否直接将其发送到存储库?启用错误报告后,我可以看到“对非对象调用成员函数findByChar()”appear您是否已正确插入街道存储库?请确保已将\VENDOR\ExtensionName\更改为您的VENDOR和extension name
/**
* streetRepository
*
* @var \VENDOR\ExtensionName\Domain\Repository\StreetRepository
* @inject
*/
protected $streetRepository;
/**
* action listByChar
*
* @return void
*/
public function listByCharAction() {
$streets = $this->streetRepository->findByChar( $this->request->getArgument('char') );
$this->view->assign('streets', $streets);
}
public function findByChar($char){
$query = $this->createQuery();
$query->matching($query->like('name', $char . '%'));
return $query->execute();
}