TYPO3 6.2: не удалось найти подходящий преобразователь типов для исключения String после обновления

TYPO3 был очень старой версией, обновленной до TYPO3 6.2. Большинство вещей сейчас работает, но у меня есть одно собственное письменное расширение, которое выдает следующую ошибку:

Ядро: Обработчик исключений (WEB): Неперехваченное исключение TYPO3: # 1297759968: Исключение при сопоставлении свойств в пути к свойству "": Не удалось найти подходящий преобразователь типа для "String", потому что такого класса или интерфейса не существует. | TYPO3 \ CMS \ Extbase \ Property \ Exception в файле /srv/vhosts.d/typo3_src-6.2.9/typo3/sysext/extbase/Classes/Property/PropertyMapper.php в строке 106.

У меня есть метод списка в одном из контроллеров, который генерирует ссылку:

<f:link.action action="show" arguments="{id : course.id}"> {course.name}</f:link.action>

Этот метод списка работает, но когда я хочу открыть эту сгенерированную ссылку на веб-сайте, я получаю сообщение об ошибке сверху.

Я удаляю все, что есть в методе showAction, а также меняю шаблон на базовый вывод без особых действий. Метод выглядит примерно так:

 /**
 * action show
 *
 * @param String Course-Id
 * @return void
 */
public function showAction($id){

}

Но ошибка все еще есть. Я больше не знаю, в чем проблема. Было бы здорово, если бы у кого-то было другое мнение и у кого-то были идеи, в которых я мог бы попытаться выяснить, в чем проблема на самом деле.


person Mirar    schedule 19.06.2015    source источник
comment
Не уверен, но я полагаю, что вы неправильно набрали String в комментарии к документации. Вместо этого попробуйте string с маленькой буквой s. Также очистите кеш с помощью инструмента установки после изменения, чтобы убедиться, что комментарии к документу будут проанализированы снова.   -  person Jost    schedule 19.06.2015
comment
Спасибо за подсказку. Это не было решением, но помогло мне найти ответ на мою проблему. Я запишу здесь дальше, если у кого-то будут похожие проблемы.   -  person Mirar    schedule 19.06.2015


Ответы (2)


Я думаю, это должно быть

 /**
  * action show
  *
  * @param string $id Course-Id
  * @return void
  */
 public function showAction($id){

 }

string строчные буквы и аргумент $id также должен быть указан

person Daniel    schedule 19.06.2015
comment
После того, как я нашел другое решение, я доказываю, работает ли оно также и работает нормально, и я думаю, что это лучший способ, чем мой, намного короче :) - person Mirar; 19.06.2015

Я хочу поделиться своим решением:

Первая проблема заключалась в том, что я не знаю, что есть новый способ удаления кеша ядра. Я узнал об этом из-за комментария Йоста в моем ответе «очистить кеш от инструмента установки». Итак, я захожу в Backend Typo3, чтобы редактировать пользователя и редактировать там свой собственный в поле TSconfig Параметры. Добавляю туда строку с options.clearCache.system = 1. Теперь я могу очистить ядро ​​системы над символом вспышки в Backend Typo3.

После этого пытаюсь поменять @param String на @param string. Я удалил основной кеш, а затем получил другую ошибку. Я обнаружил, что в этой новой ошибке говорится, что только arrays или objects являются параметрами, разрешенными в методе действия (см. http://wiki.typo3.org/Exception/CMS/1253175643). Поэтому я удалил параметр и следовал инструкциям на веб-сайте, где объясняется ошибка. Итак, мой новый метод выглядит следующим образом:

/**
* action show
*
* @return void
*/
public function showAction(){
    if ($this->request->hasArgument('id')) {
        $id= $this->request->getArgument('id');
    }
    // Do stuff with the id
}

И теперь это работает :)

person Mirar    schedule 19.06.2015
comment
Конечно, это работает, вы просто полностью удалили проверку своих аргументов :) Даниэль, его ответ правильный, попробуйте использовать проверку, или вы получите небезопасное приложение - person rob-ot; 21.06.2015