Поделюсь подход с использованием CI
- создать контроллер, как тонкий, как это возможно. Основное задание контроллера будет получать только параметр
URI
, _GET
и _POST
. Затем контроллер передаст требуемый параметр в модели и получит результат. После этого будет загружен файл просмотра, и все переменные, необходимые для представления, будут переданы.
- Вся эта логика процесса, связанная с базой данных, отправкой электронной почты и т. Д., Обрабатывается в модели. Модель будет получать параметр, делать запрос, обрабатывать результат запроса, если это необходимо, а затем возвращать массив, resultet, boolean или integer. Контроллер, который получает возвращаемое значение, передает его непосредственно для просмотра без его переработки.
- В поле зрения, он обработает переменную, чтобы отобразить ее. Будет представлен цикл для отображения списка данных, получения поля столбца из массива, а затем отображения его как значения по умолчанию формы и т. Д. Просмотр и модель часто разрабатываются в паре, поскольку все необходимое поле должно быть предоставлено запросом в модели ,
Единственная «жирная» обработка в Контроллере - это form_validation. Я отвечаю на него в другом вопросе, как я написал свои правила form_validation и как его использовать.
Ниже мои ответы на ваш вопрос выше:
Q.При создании новой формы и вашего с использованием формы form_helper CI я создаю массивы в контроллере и передаю его методу view/form_input(). Должен ли я делать это в контроллере , представлении или отдельном файле ?
Я редко использую форму_helper. Это связано с тем, что большинство моих взглядов пришло от другого разработчика или предоставлено клиентом как HTML-файл. Я использую только form_dropdown
, потому что это позволяет мне передавать параметры как массив, а не делать foreach
. Для другого элемента формы я просто использую тот, который представлен в файле шаблона.
Q. В мой контроллер, я создаю метод для моей формы т.е. new_user() и мой взгляд/Form_Open() указываю другой метод в мой контроллер для обрабатывать действия (т. е. add(), edit(), delete() ..etc) & этот способ обрабатывает валидацию. Это путь , который я передаю; Тем не менее, у меня было много проблем с передачей данных , если проверка не прошла. Любые предложения?
Когда я создаю свое приложение, у меня часто есть только два основных метода в контроллере. admin
предназначен для отображения списка и удаления дескриптора и form
для отображения и обработки добавления и редактирования. Позвольте мне привести пример с модулем продукта.
у меня будет контроллер продукта с этими методами:
class Product extends MY_Controller {
function index()
{
//for front page, display list of product
}
function detail()
{
//for front page, display single product detail
//product id is passed as 3rd URI segment
$id = intval($this->uri->rsegment(3));
}
function admin()
{
//for admin, display product list
//receive id in _POST then do delete
//after delete, do redirect to self, best practise
}
function form()
{
//for admin, handle add and edit
$id = intval($this->uri->rsegment(3));
//if id given and product detail data can be loaded, then it in 'edit' mode
//else it in 'add' mode
//after validation success, and insert/update success, redirect to product/admin
}
}
Используя этот подход, можно избежать дублирования кода и может поддерживать весь код, чтобы всегда в актуальном состоянии. Почти все добавить & edit имеют одинаковый вид и поле формы. В случае добавления & изменить форму (например, редактировать пользователя, не разрешать изменение имени пользователя), иметь переменную $mode
либо add
, либо edit
, я могу поставить простой if
и отобразить правильную форму, правила проверки и вызвать соответствующие модели.
Q. У меня есть экземпляр или два, что, когда я выполнить проверку формы мне нужно Validate против двух $ _POST переменных. Примером может быть, по проверке я нужно запросить базу данных для определить, является ли введенный бизнес уже существует (на основе от бизнес имя и почтовый индекс), а затем перенаправить обратно к виду и сохраняются на пост переменные. До сих пор мне не удалось найти , чтобы найти способ создания настраиваемой функции обратного вызова , потому что можно передать только одним параметром. Единственный способ, которым я мог получить эту работу, если проверки проходит, я затем выполнить проверку базы данных и если бизнес существует я положил $ _POST в сессии/flashdata и использования редиректа для загрузки вид снова. Массив, который определяет атрибуты form_input , вызывает значение set_value, равное , где он вытягивает flashdata для каждой записи в массиве.
create your own validation rules. Чтобы передать более одного параметра, вы можете открыть файл system/libraries/Form_validation.php
, затем посмотреть код function matches($str, $field)
. В вашем обратном вызове может быть более одного параметра, а код function matches($str, $field)
покажет вам, как читать и использовать второй параметр.
Надеюсь, это поможет вам в обучении и использовании CI. Ожидание отличного веб-приложения от вас;)
если ($ this-> ввод-> сообщение ('поле)! == FALSE) - одно и то же. –