Не работает FormLister на Blade

Всем привет.
Начал осваивать Laravel, за ним Blade.

Не получается вывести FormLister ни одним из способов:
1. Ни через @evoParser
2. Ни через вызов сниппета (не выводит вообще ничего, html):


{!! $modx->runSnippet('FormLister',[
	'formid' => 'advanced',
	'formTpl' => '@B_FILE:partials/contact-form',
	'to' => 'anton@mail.com',
	'reportTpl' => <a name="cut"></a>  '@B_FILE:partials/contact-form-report',
	'debug' => '1'
	])
!!}


В логах пишет: Parameter &formid is not set
Хотя в файле contact-form.blade.php есть нужный идентификатор формы:
<input type="hidden" name="formid" value="advanced">


Пробовал напрямую код писать через @B_CODE — тоже такая же ошибка, но зато выводит html.
И менял другие formid, руками всё переписывал. Всё так же ошибка.

Где поправить/подружить/ошибка в синтаксисе?

P.S. У версии MODX Evo 2.0b при нажатии на ссылку «Забыл пароль» (та, что на входе в админку) приходит письмо с нужным текстом, но без ссылки на страницу сброса пароля.

21 комментарий

avatar
Путь в evo 2 для шаблонов doclister и formlister неправильный, как-то писали, что из-за совместимости с 1.4 — решается плагином
Event::listen('evolution.OnWebPageInit', function ($params) {
			$modx = EvolutionCMS();
			$DLTemplate = \DLTemplate::getInstance($modx);
			$DLTemplate->setTemplatePath('/');
		});
Комментарий отредактирован 2019-05-08 09:29:40 пользователем AxelS
avatar
Спасибо за ответ.
Но ведь DocLister работает нормально.

Все равно FormLister не работает с Blade.
avatar
avatar
Огромное спасибо за ответ. Именно из этого источника я взял первые примеры для Blade в Evo (и там нет примера для FormLister).
Но прочтите внимательно, пожалуйста: ВСЕ сниппеты работают КРОМЕ FormLister.
DLmenu, DocLister, DLcrumbs, If — все работают, с помощью разных способов: @evoParser, через runSnippet.

Но только лишь FormLister не работает при любом раскладе и выдает ошибку:
Parameter &formid is not set


Хотя в форме идентификатор указан правильно.

Я пробовал сделать форму с 1 полем и 1 кнопкой, чтобы исключить ошибку в синтаксисе.

Но всё равно FormLister не работает с Blade и показывает ошибку.

Это баг или я где-то ошибся?
avatar
Скорей всего где то ошибка ибо я на 2.0 и на blade уже сделал больше 10 сайтов везде Formlister работает на ура
avatar
Очень прошу пример пример кода, пожалуйста!
Я правда, много чего перепробовал, честно. Даже форму сделал на 1 поле и 1 кнопку — все равно ошибка.

Можно в личку, но лучше сюда, так как документации очень мало.
avatar
Да обычный вызов ничего нового не вставлял
avatar
То есть, в данном вызове, который у меня НЕ работает должен у всех работать?


{!! $modx->runSnippet('FormLister',[
	'formid' => 'advanced',
	'formTpl' => '@B_FILE:partials/contact-form',
	'to' => 'anton@mail.com',
	'reportTpl' => '@B_FILE:partials/contact-form-report',
	'debug' => '1'
	])
!!}


contact-form.blade.php

<form method="post" class="needs-validation" action="[~[*id*]~]#contact-us" novalidate>
    <input type="hidden" name="formid" value="advanced">
    <div class="form-row">
        <div class="form-group col-md-6[+name.errorClass+][+name.requiredClass+]">
            <input type="text" class="form-control" id="inputName" placeholder="Your name *" name="name" value="[+name.value+]"
                   required>
            <div class="invalid-feedback">
                [+name.error+]
            </div>
        </div>
</div>
    <button type="submit" class="btn btn-primary text-uppercase float-right">
        <i class="far fa-paper-plane"></i> Send
    </button>
</form>
avatar
должно работать смотрите что прилетает в REQUEST может что то мешает ему получить formid + добавьте в вызов debug=1
avatar
Пустая форма и ничего не прилетает:


Что я делаю не так?
avatar
Часть багов нашел:

Баг 1. Не @B_CODE надо использовать, а просто @CODE. Это подтверждает, что документация некорректна и в разных источниках по-разному. Поэтому я по-человечески попросил рабочий пример.
Форма заработала, но не заработала с файловым элементом ни с @B_FILE, ни с @FILE.

Баг 2. Форма отображается только админу О_о
То есть, если открыть форму в другом браузере или в инкогнито-режиме, то она тупо не видна и в html-коде страницы ее так же нет.
Как??

Ребят, ну неужели так трудно скинуть рабочий пример?
Документации по новым элементам MODX или ее нет, или ее мало, или она разная в разных источниках.

Кто может скинуть рабочий пример FormLister в Blade, пожалуйста?
Желательно с привязкой к файлу, типа @FILE:

UPDATE к багу 2.
Удалил плагин из первого комментария:

Event::listen('evolution.OnWebPageInit', function ($params) {
                        $modx = EvolutionCMS();
                        $DLTemplate = \DLTemplate::getInstance($modx);
                        $DLTemplate->setTemplatePath('/');
                });


Форма теперь видна во всех режимах, но… но… ОПЯТЬ НЕ РАБОТАЕТ!!! :D

Комментарий отредактирован 2019-05-09 15:39:59 пользователем antonfix
avatar
Вы используете Бета версию и жалуетесь что нет документации… Не правильный подход если что :)

Используйте стабильные релизы или разбирайтесь что как и почему. Кста 2 не баг а там кеш надо чистить
avatar
Кстати так же логично это писать на гитхаб что б это не потерялось потом. Пример будет как доведем до ума то что надо.

В планах полностью работа без использования парсера Ево сейчас пока еще в некоторых моментах оно надо.
avatar
Так я не жалуюсь! Я прошу кусочек кода, который у кого-то работает.

Вот Вы, Дмитрий, можете поделиться со мной кусочком этого кода, пожалуйста?
avatar
А я форму использовал с парсером EVO по тому и не делюсь :) Да и потому не понимал где бага, Кста не знаю поддерживает ли FormLister blade
avatar
С парсером? :D
Пожалуйста:
@evoParser('[[FormLister? &formid=`advanced` &formTpl=`@CODE:<form method="post" class="needs-validation" novalidate><input type="hidden" name="formid" value="advanced"><input type="text" class="form-control" id="inputName" placeholder="Your name *" name="name" value="[+name.value+]" required><button type="submit" class="btn btn-primary text-uppercase float-right"><i class="far fa-paper-plane"></i> Send</button></form>` &to=`anton@mail.com`]])


Получаем:
« Evo Parse Error »
syntax error, unexpected 'FormLister' (T_STRING), expecting ')' 


А здесь что не так? :)
avatar
Опечатка не закрыта )

я не использую формы инлайново только через ajax

поэтому в шаблоне вставлен только чанк + js скрипт так же как в демо сайте а уже обработка на стороне плагина на событие 404.
avatar
Закрыл, форму стало отображать, но опять же не работает :)

Мда…
avatar

<div id="ajaxForm">
	{{ContactForm}}
</div>
<script type="text/javascript">
	//see plugin evoAjax
	 $(document).on('submit','#ajaxForm form',function(ev){
        var frm = $('#ajaxForm form');
        $('#submit').prop( "disabled", true );
        $.ajax({
            type: 'post',
            url: '[(site_url)]feedbackajaxform', 
            data: frm.serialize(),
            success: function (data) {
   				$('#ajaxForm').empty();
                $('#ajaxForm').html( data ); 
            }
        });
        ev.preventDefault();
    });
</script>
avatar
плагин:
switch($_GET['q']){     
	case 'feedbackajaxform':
		echo $modx->runSnippet('FormLister', array(
			'formid' => 'ContactForm',
			'to' => $modx->config['emailsender'],
			'parseMailerParams'=> '1',
			'replyTo'=> '@CODE:[+user.email.value+]',
			'subjectTpl' => '@CODE:[+subject.value+], from: ' . $modx->config['site_name'] ,
			'ccSender'=>'1',
			'errorClass'=> ' has-error',
			'requiredClass'=> ' has-warning',
			'rules'=> '{
               	"name":{
               		"required":"Enter your Name"
               	},
               	"email":{
               		"required":"Enter email",
               		"email":"Incorrect email"
               	},
               	"message":{
                	"required":"Enter message"
                }
            }',
			'formControls'=>'subject',
			'messagesTpl' => '@CODE:<div class="form-messages alert alert-danger">[+required+]
[+errors+]</div>',
            'errorTpl'=>'@CODE: [+message+]',
            'successTpl'=> '@CODE: 
             	<div class="alert alert-success mt-3">
                 	<h3>Thanks!</h3>
                 	<p>your message has been sent.</p>
             	</div>',
            'formTpl' => 'ContactForm', 
			'reportTpl'=>'ContactFormReport',
            'ccSenderTpl'=>'ContactFormReport',	
			));
			die();
        break;
}


avatar
Ну а чанк вывести на страничку через blade не проблема
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.