Переменная Symfony, переходящая из действия в представление
Здравствуйте, у меня есть следующая проблема:
У меня есть класс действий вида в Symfony, action.класс.php, там у меня есть такой код:
foreach ($images as $i => $img)
{
if (strstr($request->getFileType($img), 'image'))
{
$enter = true;
$name = Util::processImages($request, $img, 'app_uploads_temp_dir');
if ($name != '')
{
$userimages[$i] = $name;
$this->uploads[$i] = true;
$this->message = 'Image loaded';
}
}
}
И, на мой взгляд, я хочу отобразить поле загрузки или сообщение в зависимости от случая:
<div class="fotoupload">
<?php if ( !isset($this->uploads[1]) ): ?>
<?php echo label_for('photosec1', 'Imagen 2:') ?>
<?php echo input_file_tag('photosec1') ?>
<?php else: ?>
<span><?php $this->message ?></span>
<?php endif ?>
</div>
Но $this - > message не задано, ни $message, ни какая-либо переменная не передается из действия, может кто-нибудь сказать мне, почему это произошло и как я мог бы решить эту проблему??
2 ответа:
Ладно все, я сам нашел ответ, извините за публикацию ответа, я оставлю его на случай, если у кого-то есть такая же проблема:
Вся идея заключается в использовании слотов, код будет выглядеть так:
foreach ($images as $i => $img) { if (strstr($request->getFileType($img), 'image')) { $enter = true; $name = Util::processImages($request, $img, 'app_uploads_temp_dir'); if ($name != '') { $userimages[$i] = $name; $uploads[$i] = true; $message = 'Image loaded'; } } } $this->getResponse()->setSlot("message", $message);
И в следующем коде использовать переменную:
<span><?php echo get_slot("message") ?></span>
В любом случае спасибо!
- если администратор считает, что этот вопрос должен быть удален, пожалуйста, скажите мне, и я сделаю это
Если вы зададите $ this->message в своем действии, оно будет доступно в виде $message в вашем представлении.
Но в вашем случае вы устанавливаете $this - > message внутри foreach (), поэтому вы переопределяете $this - > message для каждого цикла. Это может объяснить, почему $message не возвращал ожидаемое значение.
Использование слота здесь не является правильным вариантом использования, так как все $ this-> vars, установленные в действиях, уже передаются непосредственно в представление/шаблон.