Php 按第一个字符筛选数据-Typo3/Extbase插件

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.

我必须做一个typo3扩展,在下拉菜单中显示街道。 现在我需要在顶部从a到Z进行分页

单击这些链接,然后必须过滤掉以相应字符开头的街道。我试图在城市控制器调用中执行
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();
}