在自定義extbase擴展中,我需要調用show操作,並將其傳遞給另一個值,而不是uid
(這是Use other than primary key as RealURL id_field的延續)。在extbase中,如何通過除uid之外的其他值訪問項目
當值「比UID等」不解決,它導致異常http://wiki.typo3.org/Exception/CMS/1297759968
編輯:這裏是當前工作(但醜陋的)控制器代碼:
/**
* ItemController
*/
class ItemController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
/**
* itemRepository
*
* @var \STUBR\Weiterbildung\Domain\Repository\ItemRepository
* @inject
*/
protected $itemRepository = NULL;
/**
* action list
*
* @return void
*/
public function listAction(\STUBR\Weiterbildung\Domain\Model\Item $item=null) {
if (!empty(\TYPO3\CMS\Core\Utility\GeneralUtility::_GET('tx_weiterbildung_pi1'))){
$this->forward('show');
}
$items = $this->itemRepository->findAll();
$this->view->assign('items', $items);
}
/**
* action show
*
* @param \STUBR\Weiterbildung\Domain\Model\Item $item
* @return void
*/
public function showAction(\STUBR\Weiterbildung\Domain\Model\Item $item=null) {
$tx_weiterbildung_pi1_get = \TYPO3\CMS\Core\Utility\GeneralUtility::_GET('tx_weiterbildung_pi1');
if (!empty($tx_weiterbildung_pi1_get)){
$dfid = intval($tx_weiterbildung_pi1_get['durchfuehrungId']);
}
$items = $this->itemRepository->findByDurchfuehrungId($dfid);
// helpful:
//\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($item);
$this->view->assign('item', $items[0]);
}
}
PS這裏有如果神奇的方法不起作用,可以在存儲庫中使用5行:
//public function findByDurchfuehrungId($dfid) {
// $query = $this->createQuery();
// $query->matching($query->equals('durchfuehrungId', $dfid));
// return $query->execute();
//}
是不是魔術功能'findByUid()'?作爲存儲庫中的所有魔術功能'findBy [COLUMNNAME]()' – konsolenfreddy 2015-03-02 23:45:39
@konsolenfreddy我的問題是有點不完整original_uid/originalUid是我必須查找的字段。將嘗試儘快 – Urs 2015-03-03 06:38:22
爲什麼你不使用''? 不應該這樣做:' ... f:link.action> in fluid ,並使用action方法:'public function showAction($ originalUid){...}',其中'$ originalUid'註解了正確的類型? 這種方式似乎更「正確」:避免參數名稱衝突更容易。 –
Jost
2015-03-03 09:06:15