Пример контроллера MVC

После некоторого гугления я нашел совет сделать следующее:

> sqlplus /nolog

SQL> connect / as sysdba

Connected.

SQL> shutdown abort

ORACLE Instance shut down.

SQL> startup nomount

ORACLE Instance started

SQL> alter database mount;

SQL> alter database open;

, Который все еще дал ошибку:

РТЫ 00600: внутренний код ошибки, аргументы: [kcratr1_lostwrt]

я тогда нашел совет сделать следующее:

SQL> startup mount

ORACLE Instance started

SQL> recover database 

Media recovery complete

SQL> alter database open;

Database altered
39
задан James A Mohler 7 December 2012 в 00:29
поделиться

2 ответа

Пример запроса

Поместите что-то вроде этого в свой index.php :

<?php

// Holds data like $baseUrl etc.
include 'config.php';

$requestUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$requestString = substr($requestUrl, strlen($baseUrl));

$urlParams = explode('/', $requestString);

// TODO: Consider security (see comments)
$controllerName = ucfirst(array_shift($urlParams)).'Controller';
$actionName = strtolower(array_shift($urlParams)).'Action';

// Here you should probably gather the rest as params

// Call the action
$controller = new $controllerName;
$controller->$actionName();

На самом деле базовый, но вы поняли идею ... (Я тоже не знал ' t позаботьтесь о загрузке класса контроллера, но я думаю, что это можно сделать либо с помощью автозагрузки, либо вы знаете, как это сделать.)

Пример простого контроллера (controllers / login.php):

<?php    

class LoginController
{
    function loginAction()
    {
        $username = $this->request->get('username');
        $password = $this->request->get('password');

        $this->loadModel('users');
        if ($this->users->validate($username, $password))
        {
            $userData = $this->users->fetch($username);
            AuthStorage::save($username, $userData);
            $this->redirect('secret_area');
        }
        else
        {
            $this->view->message = 'Invalid login';
            $this->view->render('error');
        }
    }

    function logoutAction()
    {
        if (AuthStorage::logged())
        {
            AuthStorage::remove();
            $this->redirect('index');
        }
        else
        {
            $this->view->message = 'You are not logged in.';
            $this->view->render('error');
        }
    }
}

Как вы видите, контроллер заботится о «потоке» приложения - так называемой логике приложения. Он не заботится о хранении и представлении данных. Он скорее собирает все необходимые данные (в зависимости от текущего запроса) и назначает их представлению ...

Обратите внимание, что это не будет работать с какой-либо известной мне структурой, но я уверен, что вы знаете, какие функции предполагаются делать.

62
ответ дан 27 November 2019 в 02:41
поделиться

Представьте себе три экрана в пользовательском интерфейсе: экран, на котором пользователь вводит некоторые критерии поиска, экран, на котором отображается список сводок совпадающих записей, и экран, на котором после выбора записи отображается для редактирования. Будет некоторая логика, относящаяся к начальному поиску в строках

if search criteria are matched by no records
    redisplay criteria screen, with message saying "none found"
else if search criteria are matched by exactly one record
    display edit screen with chosen record
else (we have lots of records)
    display list screen with matching records

Куда должна идти эта логика? Не в представлении или модели? Следовательно, это работа контроллера. Контроллер также будет отвечать за выбор критериев и вызов метода Model для поиска.

2
ответ дан 27 November 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: