Максим Федоров, ok, понятно теперь. Это сделано с той целью, чтобы у "меня" была возможность определить свою такую же статическую функцию. Я так понимаю, что если я в своей модели User объявил некоторую статическую функцию findOne, то я могу ее использовать как с идентификатором self::, так и с идентификатором static::.
Меня просто спутал идентификатор static:: в дочернем классе, мне казалось, что его логичнее определить в родительском классе. Но потом дошло, что метод-то все равно вызывать нужно в каком-либо контексте, т.е. надо ставить self, но если поставить self::, то нужно обязательно реализовать метод в этом же классе, иначе интерпретатор выдаст ошибку, а если метод не нужно переопределять (чтобы не дублировать код), то достаточно поставить static::, интерпретатор пойдет искать этот метод по иерархии.... Если я наврал, поправьте, пожалуйста.
Максима, спасибо за ответ, а в чем преимущество использования позднего связывания именно в User в том виде, как это реализовано в Yii2 в примере? Почему именно этот вариант решения использован? Или так захотели авторы?
Спасибо, а можно где-нибудь посмотреть информацию про то, что вы называете "репозиторий родительского класса" - как это организовать в Yii или какие-либо snippets? Мне эта идея понравилась
Максим Тимофеев, интересное решение, не думал в таком направлении... Я пытался решить эту проблему средствами фреймворка и совсем забыл про возможности js. Спасибо за совет, это то, что нужно.
Максим, у меня исходная такая задача. Есть дизайн, в котором кнопка Submit находится в верхней части страницы, а сама форма с соответствующими полями находится в нижней части страницы и она является элементом view (один из файлов). Сама форма заполняется массивом моделей, приходящих из контроллера и сперва я сделал во view массив форм, но как в последствии разобрался, браузер за один раз отсылает только одну форму, поэтому пришлось вместо массива форм, создать одну мега-форму, поля которых идентифицируются id моделями. Здесь я понял как это работает. Но далее, чтобы сабмитить эту мега форму мне нужно кнопку submit разместить по верстке в той части страницы, за которую отвечает layout. Чтобы не создавать отдельно специальный layout именно под этот view с формами, я ввожу переменную flag во view, которая записывается в params['flag'] и эту переменную использую в layout для проверки - нужно ли выводить кнопку submit (соответственно, если вызывается этот view, он инициализирует flag и в layout появляется кнопка submit, для всех других view, переменной flag не существует и layout не выводит кнопку submit). Но чтобы кнопка submit была элементом той же самой формы, которая определена во view, мне ее нужно заключить в теги , итого получается, что эти теги я открываю и закрываю в layout при условии, конечно, что переменная flag существует и инициализирована, а далее (поскольку вложенные формы делать нельзя по спецификации) мне необходимо убрать все теги во view, хотя поля там остаются... Если я использую виджет ActiveForm, то Yii дает ошибку, что объект $form не определен, логично, ведь он сидит в layout... Понимаю, что готоволю спаггети, но как правильно не понимаю. Объясните, пожалуйста, буду признателен.
Максим, а это корректно будет? Я такое решение находил в интернете, но мне кажется, что это как-то через обход; Ваше предложение работает, я проверил, но мне как-то интуитивно кажется, что вариант с написание своего виджета более прямой что-ли, код легче читать будет потом. Не знаю, аргументов у меня нет в пользу того или иного решения, поэтому и обратился сюда. В любом случае, спасибо вам и за видео-уроки и за совет)
ну js-то ладно, пусть подключает, там не портится ничего. А css я подключаю тематическую, но основанную на bootstrap, поэтому Alert будет нормально работать. Ну на худой конец, можно было бы сделать, так чтобы этот виджет подключал свои стили не в конце, а в начале head, а так он мне все сбивает. Но вашу идею, Максим, я понял. Наверное, придется писать, заодно и разберусь как это делать. Спасибо!
И еще, Владимир, не подскажите - есть ли какие тонкости при интегрировании Foundation и Yii; я вижу, что Yii очень плотно работает с bootstrap, а про foundation мало нашел
а вы не подскажите, как это может выглядеть с точки зрения MVC - т.е. есть, допустим, есть кусок php, который выполняется по запросу ajax - его лучше попытаться "втиснуть" в контроллер, соответствующего представления или все-таки оформить как отдельный скрипт фреймворка и положить в папку, например, assets?
Владимир, спасибо за ответ. Стало более ясно, как дальше двигаться. Вопрос, который я хотел узнать - нормально ли будет, если я сделаю back-end на yii, а для клиентской части просто подключу набор js-скриптов, как это делалось в обычных html/php. В том числе и про AJAX - мне сейчас привычнее использовать его из jQuery с вызовом обычного php-скрипта, а не прописывать его в действиях Yii-контроллера. Я так и хотел сделать, но смущало, что это не ложится вроде как в архитектуру MVC...Из вашего ответа я понял, что особой проблемы здесь и нет - как удобнее, так и можно делать.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Меня просто спутал идентификатор static:: в дочернем классе, мне казалось, что его логичнее определить в родительском классе. Но потом дошло, что метод-то все равно вызывать нужно в каком-либо контексте, т.е. надо ставить self, но если поставить self::, то нужно обязательно реализовать метод в этом же классе, иначе интерпретатор выдаст ошибку, а если метод не нужно переопределять (чтобы не дублировать код), то достаточно поставить static::, интерпретатор пойдет искать этот метод по иерархии.... Если я наврал, поправьте, пожалуйста.