Общие вопросы MVC по проверке PHP и Magento - PullRequest
3 голосов
/ 13 декабря 2010

Я использую Magento и PHP CodeIgniter MVC около 4 месяцев.У меня есть своеобразная проблема с пониманием того, где установить логику проверки для CodeIgniter и Magento, только если я решу следовать архитектуре MVC в ее истинной природе и в очень правильной семантической форме.

Прежде всего, я начну с Magento: -

Скажем, у меня есть модуль "Assignment" в Magento, который касается обоих игроков и турниров.У меня есть 3 метода действия в контроллере этого модуля "Assignment", где мне нужно проверить и проверить следующее: -

  1. Идентификатор игрока
  2. Идентификатор турнира

Эта проверка также требуется в классе Block модуля "Assignment", а также в методах действия 3.
Поэтому мой запрос заключается в том, чтобы я записал проверки для 2 вышеупомянутых точек в контроллере этого модулякласс или в классе Model, потому что мне нужно будет использовать проверки как в классе Block, так и в классе Controller?

Кроме того, что на самом деле предлагает архитектура MVC в этом случае?

Если возможно, предоставьте фрагмент кода, подчеркивающий логику вашей реализации.

Относительно CodeIgniter или любой другой PHP MVC Framework: -

Поскольку проверка всего, что использует сеансы, зависит от конкретной страницы, так как в CodeIgniter нет концепции блоков, поэтому обычно проверка и настройка сеансовпеременных сеанса выполняются только в классе Controller.

Итак, мой вопрос в этом отношении заключается в том, является ли это правильным подходом, и при каких обстоятельствах я должен помещать установщики сеансов и проверки сеансов в классе Model?

И снова, что в данном случае предлагает реальная архитектура MVC?

И снова, если возможно, предоставьте фрагмент кода, подчеркивающий логику вашей реализации.

Я действительно в замешательстве по этому поводу, и я застрял здесь.Пожалуйста, помогите мне здесь.Любое решение / помощь с благодарностью.Заранее большое спасибо.

РЕДАКТИРОВАТЬ: -

Если возможно, пожалуйста, предоставьте некоторый Magento-код о том, как создавать и писать правильные проверки, а также создавать исключения, сфактические сообщения об исключениях, определенные в методах модели?

1 Ответ

5 голосов
/ 13 декабря 2010

Слой модели должен поддерживать свою согласованность, поэтому независимо от других решений вы должны включить свои проверки в слой модели.Чтобы помочь пользователю (и предоставить более полезные сообщения о проверке), вы также можете выполнить некоторую проверку на уровне контроллера.

Преимущество этого подхода состоит в том, что при условии, что вы поддерживаете уровень модели, нетвероятность того, что мошеннический контроллер установит неверные данные.Это играет на ваш второй вопрос, для которого ответ Magento будет использовать объект для управления данными в частях сеанса и проверки этих данных на пути к сеансу.


Каккроме того, чтобы иметь дело с проверками в ваших блоках / представлениях, рассмотрите возможность использования проверки как эта.Он имеет свои недостатки, но, как правило, сводит к минимуму количество кода проверки, который вы должны написать:

// make sure that the below returns the relevant assignment model class
$assignment = $this->getAssignment(); // or get it via a session, or helper, or what have you.
$player = getChosenPlayer();


try {
    $assignment->setPlayer($player); //throws exception when invalid
    ... do more ...
    $assignmnent->save();
} catch(SomeException $e) {
    addValidationError($e->getMessage());
    renderPageAgain();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...