конкретный макет mvc с видами - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь узнать больше о MVC в PHP.Но я столкнулся с проблемой: я хочу показать свое мнение в определенном месте в определенном div.Как я могу это сделать?Вот что у меня сейчас:

Контроллер:

class LogarController extends Controller {

    private $view;
    private $modelDAO;

    function __construct() {
        parent::__construct();
        $this->modelDAO = new LogarModel();
        $this->view = new LogarView();
    }

    /**
     * metodo Login().
     * funcao para logar o funcionario ja cadastrado ao banco de dados.
     */
    public function Login() {
        if ($this->modelDAO->Login($_POST['funcionario'], $_POST['senha'])) {
            $idFuncionario = $this->modelDAO->rows['idFuncionario'];
            $this->sessao = new Session();
            $this->sessao->set_value("logado",true);
            $this->sessao->set_value("idFuncionario",$idFuncionario);
            $this->redirect("view/funcionario/index.php");
        } else {
            $this->view->show("Funcionario not found");
        }
    }
}

Просмотр:

class view {

    function __construct(){}

    function __set($var,$value){
        $this->var = $value;
    }

    function __get($var){
        return $this->var;
    }

    function render($render){
        require "view/template/" . $render . ".php";
    }
    function show($value){
        $this->value = $value;
    }
    function alertar($value){
        echo "<script>alert('{$value}')</script>";
    }
}

Я хочу показать "Funcionario не найден" под кнопкой.Как я могу это сделать?Нужно ли перенаправлять страницу?

PS: я не использую фреймворк.

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Есть несколько проблем с вашим кодом, но сначала - ваша проблема: внимательно прочитайте эту статью . Он объяснит, как использовать возможности шаблонов PHP.

Рядом. Показывать или нет сообщение «Funcionario not found», вы узнаете в момент запуска скрипта. И перед рендерингом шаблона. Нет необходимости перенаправлять страницу.

Теперь, когда у вашей исходной проблемы есть решение, остальная часть беспорядка:

  1. Модель не является объектом доступа к данным. Это слой, состоящий из множества классов. Вот более длинная напыщенная речь на эту тему. Прокрутите вниз до раздела «некоторые заметки».

  2. Конструкторы не должны содержать каких-либо сложных вычислений. Также не следует создавать экземпляры других объектов, которые впоследствии будут использоваться в экземпляре. Он создает тесную связь между объектом, который вы строите, и именами классов (в вашем случае, LogarModel' and LogarView`). Она нарушает SRP .. если читать слишком долго, эта картинка сделает ее более понятной.

  3. Если у вас есть конструктор emty в php, вы можете просто удалить его (в своем классе View).

  4. Ваш тег <script> равен отсутствующим атрибутам .

  5. И что вы должны придерживаться одного языка при написании кода = P

0 голосов
/ 20 марта 2012

По сути, ваш класс представления обрабатывает вывод путем старомодного отображения переменных, созданных вашей моделью и контроллером, в представлении HTML. Есть много других способов сделать это, но это был бы один простой способ.

 class LogarView {

      public function show($message){
           echo '<input type="button" value="Click Me"/><br/>';
           echo $message;
      }

 }

Приведенный выше выводит кнопку HTML, а внизу - "Funcionario not found".

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