Yii + jquery + ajax - обработка событий

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
‡[анти]КИЉЕР‡
Сообщения: 14
Зарегистрирован: 2010.06.20, 13:23

Yii + jquery + ajax - обработка событий

Сообщение ‡[анти]КИЉЕР‡ »

Здравствуйте. Впервые имею дело фреймворками, разбор переведённой документации из-за малого опыта в программировании в целом проходит тяжело, а уровень знания английского языка и качество автоматического перевода, к сожалению, заставляет вместо прочтения описания API использовать метод тыка, а знание ООП скорее в пределах лабораторных в институте.
В целом проблема вполне решабельная и своими силами, использованием и написание собственного кода. Но фреймворк изучаю я не для того, чтоб изобретать велосипеды вновь и вновь.
Потому есть пару вопросов к сообществу)

А проблемы состоят в следующем:
1) Вроде как Yii нацелен и вполне хорошо работает с jquery, и даже есть папочки с соответствующим назначением. Но самой библиотеки нет по умолчанию. Соответственно, создал в корне проекта папку js, куда кинул туда jquery, файл с пользовательскими скриптами и ещё одну библиотеку, затем подключил их в файле protected\views\layouts\main.php
Я вообще правильно делаю, или же предполагается некий другой алгоритм действия и подключения js скриптов?

2) папка assets. Что это? Я так понял что там сохраняются и туда распаковываются файлы в том числе и скрипты, с префиксом jquery.*. При этом это то ли кеш, то ли просто временная папка где хранятся данные текущей сессии ну или типа того. Откуда это, всё, зачём? Какого вообще и как это отключить? Там каждый раз, при запуске, как я понял, создаётся некая новая папка с 8-ми символьным именем, в которых лежит одно и то же. На кой это нужно?

3) У меня есть, к примеру, некий обьект, "устройства". Для него есть соответствующая таблица в БД, а так же создан класс в папке protected\components. При этом есть в этом классе функции вывода и ввода данных. Проверка корректности введённых данных осуществляется внутри этих функций. Ну т.е. что то вроде:

Код: Выделить всё

function addNewDevice($id,$params)
{
  if (empty($id)) return 'ОШИБКА: пустое поле "id". Информация не была добавлена';
  if (empty($params)) return 'ОШИБКА: пустое поле "params". Информация не была добавлена';
  // и т.д. в том же духе
  $sql='INSERT INTO .......'; // Ну и затем уже добавляется в БД если всё нормально.
  return 'Добавление прошло успешно!';
} 
Я вообще правильно выбрал что для этого тип "компонент", а не, скажем, "модель"? И вроде есть уже в yii фильтры. Но не понял как их толком использовать. Я так понял что там есть просто несколько функций для, например, сравнения, имеют ли переданные параметры одинаковое значение.

4) При этом редактирование и добавление данных должно производится через аякс. Действия у меня привязаны к клику по кнопкам с соответствующим id или name. Как при этом правильно запустить аякс? Конечно в рецептах есть пример, но мне непонятно: какой именно php файл запуститься при нажатии соответствующей кнопки? А если мне, прежде чем отправлять форму нужно средствами того же jquery проверить её валидацию или ещё что-то?
А просто создать так же в корне проекта папку ajax, куда поместить отдельные php файлы для каждого действия (добавления, редактирования и т.д.) Не будет ли это проще и правильнее?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Yii + jquery + ajax - обработка событий

Сообщение slavcodev »

1) и 2) viewtopic.php?f=3&t=95
http://yiiframework.ru/doc/guide/ru/basics.convention
http://www.yiiframework.com/doc/api/CClientScript
http://www.yiiframework.com/doc/api/CAssetManager

в двух словах, т.к. с анг. плохо чтоб было от чего отталкиватся. assets - ресуры, css, js и другие файлы которые должны быть доступны пользователю. для начало их нужно опубликовать туда

Код: Выделить всё

Yii::app()->assetManager->publish('') 
затем регистрировать на страницах

Код: Выделить всё

Yii::app()->clientScript->registerScript('') 
пример подключения jQuery

Код: Выделить всё

Yii::app()->clientScript->registerCoreScript('jquery') 
3) Данные это модель, перечитай про MVC
Жду Yii 3!
Ответить