Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.10.2012 13:44:52

Странное поведение в шаблоне

Привет.

Продолжаю изучать фреймворк (а заодно и восстанавливать знания PHP после многолетней измены ему с другими языками ☺
Наткнулся на странную багу, ниже код:

xml<li><a @if($hl_home == 'yes') class="over" @endif href="#">Home</a></li>

соответственно в контроллере:

PHP
return View::make('home.index')->with('hl_home','yes');

и получаю ошибку:
Unhandled Exception
Message:
syntax error, unexpected T_CLASS

если заглянуть в /storage/views/, то можно посмотреть код уже после работы шаблонизатора, соответственно вижу:

PHP
<li><a <?php if($hl_home == 'yes') class="over" <?php endif; ?> href="#">Home</a></li>

Но стоит сделать вот так:

xml<li><a @if($hl_home == 'yes') class="over" @endif
href="#">Home</a></li>

фактически да, просто хреф перевести на новую строку и шаблон начинает отображается нормально
если снова заглянуть в /storage/views/, там будет:

PHP
<li><a <?php if($hl_about == 'yes'): ?> class="over" <?php endif; ?>
href="#">Home</a></li>

Заметили разницу? ☺

Не в сети

#2 15.10.2012 17:13:01

Re: Странное поведение в шаблоне

Я не думаю, что Blade может работать с @if, когда он не один на строке (или кончается не на \n) — я сам даже никогда не использовал его так. В этом конкретном случае мне кажется логичней написать так:

xml<li><a class="{{ $hl_home == 'yes' ? 'over' : '' }}" href="#">Home</a></li>

Не в сети

#3 15.10.2012 17:30:17

Re: Странное поведение в шаблоне

Выдержка из blade.php

/**
261:      * Rewrites Blade structure openings into PHP structure openings.
262:      *
263:      * @param  string  $value
264:      * @return string
265:      */
266: protected static function compile_structure_openings($value)
267:     {
268:         $pattern = '/(\s*)@(if|elseif|foreach|for|while)(\s*\(.*\))/';
269: 
270:         return preg_replace($pattern, '$1<?php $2$3: ?>', $value);
271:     }

Так оно и есть, должно быть отдельной строкой.

Не в сети

#4 15.10.2012 18:20:36

Re: Странное поведение в шаблоне

Да, спасибо, примерно так и переделал в итоге. Т.е. выставляю просто класс в нужное значение по массиву флажков.

Не в сети

Подвал раздела