dev400: Этим я уже занимался, не подходит. Если я возвращаю что-либо кроме false - приложение продолжает работу, иначе просто прекращается выполнение скрипта. Мне же нужно при определённых условиях возвращать данные в виде JSON объекта (строка). Если я пытаюсь вернуть из beforeAction JSON объект через return $jsonObj, то скрипт продолжает работу, так как по сути в методе возвращается "истина". В описании вопроса я уже описал это ведь.
slo_nik:
У меня не множатся формы, у меня множатся модели, которые обслуживает эта форма.
Для корректного сохранения мне нужно указывать ключ для каждой модели:
Но делать это нужно на лету, при нажатии на кнопку "Добавить продукт".
Соответственно в моём случае оптимальный вариант - в качестве ключа использовать ID модели.
Можно, конечно, при создании нового экземпляра формы отдавать её не из скрытого шаблона на странице, а посредством AJAX подгрузки, где на стороне PHP счётчик будет увеличивать ключ текущей формы, но разве это целесообразно?
Однако, если нет более элегантного решения - получение HTML-кода формы через AJAX, наиболее приемлемый вариант.
Почти, но нет.
Табличный ввод будет работать если только заранее имеется определённое количество моделей.
В моём же случае - количество форм на странице меняется и мне нужно как-то их все сохранить, но чтобы они не перезаписывали друг друга - нужно придумать как правильно подставлять ключи, типа "name='Product[$key][name]'".
Уже делал такое с подстановкой рандомных Int с помощью JS - пишем html-код формы в переменную и вместо $key на лету подставляем рандомное значение. Задача решается, но мне кажется, что это убогий костыль и есть более адекватный способ.
Конкретно Нода не хочет в упор видеть ресурс по домену. Уточню еще раз - если в hosts прописать явно "175.90.1.55 my-domain.ru", то запрос уходит и проблема, вроде как, решается, но это не решение, с учётом того, что на машине не один ресурс и несколько независимых юзеров под ISP.
В корректности настройки хостов я уверен лишь на 95%, поэтому могу написать конфиги Apache и Nginx, если потребуется.
В свое время с ним был опыт и по какой-то причине решено было пользоваться Sentinel. Но спасибо, что напомнили, возможно на него перейдем, судя по документации выполняет все те же функции и даже на порядок лучше.
Сделал так в первую очередь по этому мануалу - https://github.com/cartalyst/sentinel/wiki/Extendi...
Sentinel::check() или Sentinel::getUser() все равно возвращает оригинальный класс (в теле вопроса это было указано).
Пришел к выводу, что это не реализуемо таким путем, потому что метод виджета отрабатывает только тогда, когда при компилировании страницы до него доходит очередь.