MVC - как сделать так, чтобы URL не менялся при вызове метода - PullRequest
0 голосов
/ 11 марта 2012

У меня есть

контроллер входа, модель и вид

url http://mySite/login

Теперь, когда я нахожусь на http://mySite/controller, он показывает форму входа изатем, когда я отправляю форму, вызывается метод run , поэтому изменение URL-адреса на http://mySite/login/run

как я могу остановить это:?

PS // Я создаю свойсобственный MVC, следующий за этим: http://www.youtube.com/watch?v=2Eu0Nkpo6vM

контроллер входа

class Login extends Conroller  {

    function __construct() {
        parent::__construct();  
    }

    function index() 
    {   
        $this->view->render('authentication/enter');
    }

    function run()
    {
        $this->model->run();
    }


}

модель входа

class Login_Model extends Model
{
    public function __construct()
    {
        parent::__construct();
    }

    public function run()
    {

            $sth = $this->dbh->connect()->prepare("SELECT UserID FROM users WHERE 
                username = :login ");
        $sth->execute(array(':login' => $_POST['login']));

        $data = $sth->fetch();

        $count =  $sth->rowCount();
        if ($count > 0) {
            // login
            Session::set('loggedIn', $_POST['login']);
            header('location: ../dashboard');
        } else {
            echo 4;
        }


    }

}

без .htacces

URL-адрес

http://mySite/index.php?url={controller name}

или

http://mySite/index.php?url={controller name} / {некоторый метод из контроллера}

1 Ответ

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

Без просмотра всего этого видео или без особого удивления, почему вы заново изобретаете колесо PHP MVC, вот мое лучшее предположение.

  1. Измените форму вашего представления для отправки в действие индекса

    <form method="post" action="login" ...
    
  2. В вашем действии index определите запрос POST и запустите оттуда метод run() модели

    function index() 
    {   
        if ($this->request->isPost()) { // seriously, I'm just guessing here
            $this->model->run();
        }
        $this->view->render('authentication/enter');
    }
    

Пара заметок ...

  • Не выполнять задачи контроллера (т.е. перенаправлять) из модели
  • Всегда exit; после отправки Location заголовка ответа
  • Оставьте этот беспорядок и попробуйте проверенный и протестированный MVC-фреймворк, такой как Symfony или Zend
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...