действие контроллера вызова из представления в php - PullRequest
0 голосов
/ 26 мая 2011

В PHP при работе по шаблону MVC без каких-либо рамок, когда страница загружается и снова для обработки CRUD, файл должен идти на контроллер Итак, как подключить страницу просмотра к контроллеру, поскольку страница просмотра проста, как HTML? Контроллер отображает страницу просмотра через ActionView, так что страница просмотра будет связана с контроллером для обработки CRUD.

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Каждый запрос MVC проходит через один и тот же Контроллер -> Модель -> Представление цикл .В этом смысле каждое представление всегда «связывается» с контроллером, но не в одном запросе.

  1. пользователь открывает URL /posts/add
  2. PostsControllerзахватывает некоторые данные и отображает представление
  3. представление состоит из формы, возможно отображающей некоторые данные из контроллера
  4. окончательный HTML-код отправляется пользователю

Один цикл запроса заканчивается здесь.Браузер отображает форму HTML.При отправке формы на сервер отправляется новый запрос.

  1. форма отправляется на /posts/add
  2. , PostsController захватывает данные, сохраняет их с использованием модели
  3. если все работает, контроллер отображает страницу "Спасибо" (или что-то еще, что он делает)
  4. , если она не работает, контроллер снова отображает форму,заполненный сообщениями об ошибках
  5. окончательный HTML-код отправляется пользователю

Это снова завершает цикл.Представление никогда не говорит с контроллером в цикле MVC.Он просто выводит HTML, который видит пользователь.Затем пользователь инициирует новый запрос к контроллеру.

0 голосов
/ 26 мая 2011

Скажем, у вас есть следующее:

/ m / User.class.php /v/newUser.php /c/UserController.class.php

Обычно я разбиваю их на 3Слои: модель в классе, хорошо инкапсулированный класс высокого связности для данного бизнес-объекта.Хотя этот класс отвечает за объектную модель пользователя, контроллер отвечает за реализацию методов CRUD.Это упрощает разделение задач, способствует повторному использованию кода и т. Д. Затем вы можете подключить контроллер к любому представлению, которое вам нужно, например, «newUser.php» для просмотра пользователей.

Поскольку PHP является языком сценариев, вам необходимо импортировать зависимости перед его использованием.Итак, глядя на дерево зависимостей, я обычно импортирую модель в контроллер, используя «require_once», и контроллеры в представление.

User.class.php ----- class User {private $ username;

 User($newUsername) {
     $this->username = $newUsername;
 }

}

userController.php --------------- (учитывая, что направление "приложение" ниже находится под переменной PHP INCLUDE_PATH)

require_once ("app / m / User.class.php");

classUserController {

public static createUser($newUsername) {
    return new User($newUsername);
}

}

newUser.php ---------- (Учитывая, что ниже указано «приложение» в переменной PHP INCLUDE_PATH)

require_once("app/c/UserController.class.php");

$newUser = $UserController.createUser("username");

echo "<b>" . $newUser;

В дополнение к этому я использую систему ORM, такую ​​как Propel, чтобы обеспечить постоянство пользователя.Я реализовал большую систему PHP во время обучения в магистратуре с Propel и ручным MVC ... Для более полного примера этой структуры перейдите к http://java.net/projects/infinity-metrics/sources/svn/content/trunk/app/classes/infinitymetrics/controller/UserManagementController.class.php для примера контроллера.Вот пример представления с использованием этого контроллера: http://java.net/projects/infinity-metrics/sources/svn/content/trunk/app/user/student/signup-step1.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...