@pzru

Оператор [[!If? не выводит чанки. Или проблема Глубже? Как исправить?

Здравствуйте. Подскажите пожалуйста, что я делаю не так:
Есть чанк:
[[!If?
   		&subject=`[[!smrProfileUserEditStatus]]`
   		&operator=`inarray`
   		&operand=`2,3`
   		&then=`[[$smrProfileRequestUserEditDisabled]]`
   		&else=`[[$smrProfileRequestUserEditEnabled]]`
   	]]


Сниппет [[!smrProfileUserEditStatus]], возвращает 1,2,3 или пусто. Проверено, работает. На всякий, код сниппета:
$reqid = $_GET['cpreq'];
$pst = "";
$output = "";
if (is_numeric($reqid)) {
	$pst = $modx->getObject('VinZapros', array('id' => $reqid));
	$output = $pst->get('prstatus');
}
return $output;

Есть два чанка, те что в &then и &else чанка в начале поста. Если их просто выводить на страницу, без условия [[!If?]] в чанке, то они прекрасно отображаются и выводятся, работают. Если же вызывать их в [[!If?]] то возвращает пустую страницу.
в error.log валит ошибками:
[2015-12-03 18:29:40] (ERROR @ /index.php) `[id]~` is not a valid integer and may not be passed to makeUrl()

Сыпет тогда, когда пытаюсь зайти на страницу с тем чанком, что вначале поста..
Если вывожу сам чанк, тот что в else или then ([[$smrProfileRequestUserEditDisabled]] или [[$smrProfileRequestUserEditDisabled]]), самостоятельно без if, они выводятся, снипетты и формы в них работают и т. д., но ошибки на этой странице сыпет в лог все равно такие же.
Если запустить в Консоли $modx->getChunk('smrProfileRequestUserEditEnabled');, или $modx->getChunk('smrProfileRequestUserEditDisabled'); или тот что вначале поста, то выдает уже более подробный лог ошибок, уже с предупреждениями:
[2015-12-03 18:51:55] (WARN @ /manager/components/console/connectors/console.php)
`27` was requested but no alias was located.
[2015-12-03 18:51:55] (WARN @ /manager/components/console/connectors/console.php)
`17` was requested but no alias was located.
[2015-12-03 18:51:55] (ERROR @ /manager/components/console/connectors/console.php)
`[id]~` is not a valid integer and may not be passed to makeUrl()
[2015-12-03 18:51:55] (WARN @ /manager/components/console/connectors/console.php)
`19` was requested but no alias was located.
[2015-12-03 18:51:55] (WARN @ /manager/components/console/connectors/console.php)
`17` was requested but no alias was located.
[2015-12-03 18:51:56] (WARN @ /manager/components/console/connectors/console.php)
`27` was requested but no alias was located.


Товарищи, подскажите, что делать? ПЛЗ :(
  • Вопрос задан
  • 340 просмотров
Пригласить эксперта
Ответы на вопрос 1
@pzru Автор вопроса
Решил. Исправил ссылки. Ошибки пропали, но проблема осталась. Пошел методом исключения. И оказалось, что внутри чанков [[$smrProfileRequestUserEditEnabled]] и [[$smrProfileRequestUserEditDisabled]], вызывался чанк [[$smrUserProfileTop]], в котором вызывался сниппет [[!smrProfileMenu]], содержащий:
<?php
$idcd = $modx->resource->get('id');
if ($idcd == 27) {
	echo "
	<li class=\"mrt0\"><a class=\"side\" style=\"border-right: 5px solid #e7e7e7;\" href=\"".$modx->makeUrl(27)."\"><i class=\"fa fa-list-alt mrr15\"></i>Мои заявки</a></li>
	<li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(17)."\"><i class=\"fa fa-list mrr15\"></i>Мои заказы</a></li>
    <li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(19)."\"><i class=\"fa fa-user mrr15\"></i>Личные данные</a></li>";
}
else if ($idcd == 17) {
	echo "
	<li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(27)."\"><i class=\"fa fa-list-alt mrr15\"></i>Мои заявки</a></li>
	<li class=\"mrt0\"><a class=\"side\" style=\"border-right: 5px solid #e7e7e7;\" href=\"".$modx->makeUrl(17)."\"><i class=\"fa fa-list mrr15\"></i>Мои заказы</a></li>
    <li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(19)."\"><i class=\"fa fa-user mrr15\"></i>Личные данные</a></li>";
}
else if ($idcd == 19) {
	echo "
	<li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(27)."\"><i class=\"fa fa-list-alt mrr15\"></i>Мои заявки</a></li>
	<li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(17)."\"><i class=\"fa fa-list mrr15\"></i>Мои заказы</a></li>
    <li class=\"mrt0\"><a class=\"side\" style=\"border-right: 5px solid #e7e7e7;\" href=\"".$modx->makeUrl(19)."\"><i class=\"fa fa-user mrr15\"></i>Личные данные</a></li>";
}
else {
	echo "
	<li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(27)."\"><i class=\"fa fa-list-alt mrr15\"></i>Мои заявки</a></li>
	<li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(17)."\"><i class=\"fa fa-list mrr15\"></i>Мои заказы</a></li>
    <li class=\"mrt0\"><a class=\"side\" href=\"".$modx->makeUrl(19)."\"><i class=\"fa fa-user mrr15\"></i>Личные данные</a></li>";	
}
Знаю, что трехэтажный велосипед, но собственно, после выдворения его вызова на уровень выше, собственно в тело самого документа:
[[$smrUserProfileTop]]
[[!If?
   &subject=`[[!urlGetValue? &field=`cpreq`]]`
   &operator=`empty`
   &then=`[[$smrProfileRequestUserList]]`
   &else=`[[$smrProfileRequestUserEditSwitch]]`
]]
[[$smrUserProfileBottom]]

все заработало. Спасибо :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы