Всем доброго времени суток! Взялся тут за интересную задачку - файловый менеджер. В целом картина понятна, на чистом PHP, используя процедурный метод написал, все работает в стеке с JQ и AJAX'ом. Решил переписать под ООП и при помощи Yii. Yii изучать начал недавно, как собственно и ООП. Переписал весь HTML во view, далее контроллер, ну уперся в то, что мне надо отправить ajax запрос и получить данные в div. Как это работает я понимаю, там ничего сложного, то куда отправлять никак не могу понять, пока URLmanager отключил. Получается надо отправить запрос в метод определенного контроллера, если есть кто работал с такой задачкой, прошу подсказать, хотя бы методологию как это работает..
@AnonimS, я с Yii не работал, но по поводу Ajax могу сказать, что к нему нужно относиться так же, как и к запросам, которые бы вы отправляли обычным способом. Если на время забыть про Ajax, то вы смогли бы написать тоже, но без него, разобрались бы какой путь нужно прописывать в ссылках или формах?
Получается я подгружаю все одним jS файлом в AppAsset.php, все функции отрабатывают как надо, а вот ajax, вот кусок Код (Javascript): function ajaxOpenDir(dir) { if (dir == undefined){ var dir = ''; } $.ajax({ type: "POST", url: 'php/obr.php', data: { dir: dir }, success: function(data){ $('.box').text(''); $('.box').append(data); fontSizeAnim(0); if(anim == 0) { $('.box-elem').show(); } else $('.box-elem').slideDown(800); } }); } Cоответственно мне надо отправить в метод, к примеру actionAjax, контроллера FileController, а потом во View отобразить то что пришло из этого метода, соответственно я в этом методе делаю что надо и вызываю его в actionIndex, который в свою очередь получает данные от actionAjax и передает render View index. Вроде как-то так, да? --- Добавлено --- Можно и так, но хотелось бы понять как это работает, раз столкнулся с задачей.
Что именно понять? Ajax? Там понимать особо нечего. Передача данных идёт в фоновом режиме. То есть, все данные передаются как обычно, но только страница при этом не перезагружается. --- Добавлено --- В Ajax даже протокол передачи данных такой же, в отличии, например, от WebSocket и т.д.
Да нет, я с вами согласен, просто смысл в том, никак не могу понять как из подгружаемого JS отправить запрос в метод контроллера, а через ajax или другим способом это я думаю 2-й момент.
я так вижу, что суть проблемы могла бы быть переформулирована следующим образом: "Я смутно представляю о том, что такое JavaScript и как он работает". В таком случае, нужно пройти "курс молодого бойца" по этому направлению.
Надо получается заново учить методы, можно обратиться $_POST, а в YII для этого есть метод, по сути одна и та же функция. Зато в фрэймворках какие-то простые задачи уже реализованы, но пока поймешь как обратиться я бы уже сам все написал на чистом. Пока у меня складывается впечатления, что те же предложения, но другими буквами..
Ваша правда, Yii2 для команды и больших проектов. Самое главное практика, поэтому и решил посмотреть что и как там на простом примере и сразу уперся...
работать с ним может быть и приятно речь о том,что странички грузятся нудновато я же дно в этом деле. только погружаюсь в фрэймворки но уже хочу свой летающий лясик) --- Добавлено --- к подобным цмс даже приближаться не хочу)
Вы не знаете, что такое ад )) Если вдруг программистский бог решит над вами поиздеваться, то вы столкнетесь с OpenCart ))
Не замечал. Yii на себя очень мало ресурсов берёт. Вот Laravel - это нечто, особенно на слабой машине. Не самое страшное, с чем я работал. Да, вечное тупое переливание из пустого в порожнее, коим наполнены его контроллеры, бесит, а так работать можно. Вот после 2 месяцев с UMI CMS сказал, что не за какие деньги больше туда не сунусь.
Программистский бог однажды меня проклял и я раскуривал контроллер ларки на две тысячи строк, один на всё приложение, вот это было ох )
Надо тут создать раздел для реабилитации пострадавших от CMS. Начало, как в клубе анонимных алкоголиков. Заходит новичок: -- Здравствуйте! Меня зовут Вова и я работал с Joomla. -- Здра-а-а-вствуй, Вова!, - с понимающим и удрученным видом приветствуют обитатели форума. -- (со слёзами на глазах) От меня отвернулись коллеги, я перестал развиваться и деградировал целый год -- У-у-у... -- (долгое рыдания, раскаяние) Дальше работа с психологами, расслабляющие процедуры простыми циклами for и foreach, восстановление в памяти человеческих паттернов и т.д. Уже через месяц, избавившись от ночных кошмаров, говнокод выйдет из организма естественным путем и тогда, чтобы не шокировать сразу, можно будет человеку рассказать о том, что в мире уже есть PHP7, а 5.2 уже как бы не в моде.
К слову о самом страшном: интернет магазин, фронт реализован на бэкбоне, но через жопу. Не, не так - через ЖОПУ. С одной стороны, начиналось у них всё нормально, отдельные куски фронта разбиты на компоненты из которых фронт собирается, но дальше что-то пошло не так и практически все компоненты были реализованы в трех экземплярах: бэкбоновский тэмпл, вьюха в ларке как часть страницы и отдельный вариант что бы отдать аяксом. Это не считая того, что иногда компоненты в разных разделах рисовались чуть по другому и потому, естественно к ним прилагалось ещё три варианта )
Вернёмся с офтопа. Смотрите, если вы можете написать из строки браузера example.com/site/hello, чтобы вызвать actionHello контроллера Site, то совершенно также вы можете скормить этот url для ajax-вызова. Ну или какие там урлы у вас без UrlManager, вроде типа example.com/index.php?r=site/hello (никогда не работал без UrlManager) PHP: $.ajax({ type: "POST", url: '/index.php?r=controller-name/action-name', data: { dir: dir }, success: function(data){ $('.box').text(''); $('.box').append(data); fontSizeAnim(0); if(anim == 0) { $('.box-elem').show(); } else $('.box-elem').slideDown(800); } }); А следующий уровень - не писать урлы вручную, а генерить через Url::to()
месяц назад или чуть больше клиент нашелся)) говорит надо доделать магазин, программер делал-делал и пропал)) смотрю на магазин - симпатично все.. через ajax обновляется.. косяки в верстке есть.. но я не фронтер)) получаю доступ к телу))) а там ужас... там смесь js php html все одной портянкой.. намека на MVC нет) более того даже все на функции не раздроблено)) код во многих местах себя дублирует) без комментариев)) в общем мрак)) видно горе программер сам запутался в своем коде и пропал))
у меня было подобное. Я посоветовался с мудрым @mahmuzar и он сказал, что надо дробить на функции. Раздробил на кучу функций и до сих пор с удовольствием поддерживают этот проект)