Laravel Как к TwigBridge добавить расширения

mstdmstd

Новичок
Всем привет,
Подключив к Laravel 5.5 проекту расширение https://github.com/rcrowe/TwigBridge
для использования twig темплейтов не нашел а как правильно добавлять расширения фильтры, функции и глобальные переменные, вроде того как я делал в CI проекте:

PHP:
$filter = new Twig_SimpleFilter('get_attribute_type_label', function ( $type ) {
$ci = & get_instance();
$label= $ci->mattribute->getAttributeTypeLabel($type);
return $label;
});
$this->m_twig_Environment->addFilter($filter);
...

$function = new Twig_SimpleFunction('show_stripe_custom_button', function ($order) {
return appCart::getStripeCustomButtonCode($order);
});
$this->m_twig_Environment->addFunction($function);
?

Спасибо !
 

mstdmstd

Новичок
И еще подскажите по твигу :
Если на форме инвалидные данные то в контроле срабатывет:
PHP:
if($validator->fails()) {
return Redirect::back()->withErrors($validator);
}
В Blade обрабатывается :
PHP:
@if ($errors->has('firstname'))
<div class="error">{{ $errors->first('firstname') }}</div>
@endif
При этом:
The $errors variable is bound to the view by the Illuminate\View\Middleware\ShareErrorsFromSession middleware, which is provided by the web middleware group. When this middleware is applied an $errors variable will always be available in your views, allowing you to conveniently assume the $errors variable is always defined and can be safely used.

Значит при использовании Twig-а эта переменная будет недоступна?
Ее надо получить в контроле(а как) и передать в темплейт как обычный массив?
Или как-то иначе ?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Значит при использовании Twig-а эта переменная будет недоступна?
Ее надо получить в контроле(а как) и передать в темплейт как обычный массив?
Или как-то иначе ?
TwigBridge повторяет это поведение, и сам прокидывает {{ errors }} внутрь.
 

mstdmstd

Новичок
Да, спасибо!
А как можно отобразить введенные инвалидные данные?
Например в поле с целым числом введена строка.
Вместе с методом withErrors надо еще как-то передать массив данных в $request->all(), если в тепмлейте я писал:
PHP:
<input class="form-control integer_input validate" value="{% if tmpCsvp.fy_obligation_year is defined %}{{ tmpCsvp.fy_obligation_year }}{% endif %}" id="fy_obligation_year" name="fy_obligation_year" maxlength="4">
{% if (errors.has('fy_obligation_year')) %}
<div class="error">{{ errors.first('fy_obligation_year') }}</div>
{% endif %}
?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
туда же обычно прокинут дефолтный хелпер {{ old() }} из ларавеля. Только редирект нужно делать не только с ошибками, но и с инпутом
PHP:
return redirect()->back()->withErrors(...)->withInput()
PHP:
{% if tmpCsvp.fy_obligation_year is defined %}{{ tmpCsvp.fy_obligation_year }}{% endif %}
Вот так не надо писать, это шаблонизатор же.
PHP:
{{ old('fy_obligation_year')|default('') }}
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Вообще, если ты начнешь пользоваться FormRequest для валидации, то тебе и редирект руками писать не придется, если из validate() вернутся ошибки валидации, он сам редиректнет с заполненным мешком ошибок и старым инпутом.
 

mstdmstd

Новичок
Подскажите еще пожалуйста а как импользуя TwigBridge получить данные из json- запроса вроде

PHP:
$.ajax({
timeout: 10000,
async :false,
url: href,
type: 'GET',
dataType: 'json',
success: function(result) { // Этот алерт ниже даже не выскакивает
alert( "load_tmp_csvp_images result ::"+var_dump(result) )

В контроле :
return View::make($this->current_dashboard_template . '.tmp_csvp.images_list', $commonVarsArray);

Я пробовал через ob_start/ob_get_contents:
безуспешно ...
А как правильно ?
 

AmdY

Пью пиво
Команда форума
Зачем тебе для этого шаблонизатор, просто верни массив в контроллере, laravel его сериализует и пошлёт как json
return $commonVarsArray;
 

mstdmstd

Новичок
Уточню : $commonVarsArray - это массив переменных в шаблон а вернуть нужно $html кусок кода и вписать его в div, как обычно делается при использовании jquery
 
Сверху