Как я могу создать дочернее представление для родительского представления в PHP MVC?

Когда я набираю этот адрес:

http://localhost/gamelvl/world-of-tanks/tankguide/

Я могу войти в вид на гидролог. Теперь внутри этой папки находится еще одна папка с именем ussr, но когда я создаю контроллер и модель для ussr, я не могу ввести ее с этим адресом:

http://localhost/gamelvl/world-of-tanks/tankguide/ussr/

Теперь кто-нибудь может дать мне инструкции о том, является ли это правильным или другими решениями для этого?

приложение маршрутизации

    <?php

class App
{
public $controller = 'index';
public $method = 'index';
public $params = [];

function __construct()
{
if (isset($_GET['url'])) {
$url = $_GET['url'];
$url = $this->parseUrl($url);
$this->controller = $url[0];
unset($url[0]);
if (isset($url[1])) {
$this->method = $url[1];
unset($url[1]);
}
$this->params = array_values($url);
}
$controllerurl = 'controllers/' . $this->controller . '.php';
if (file_exists($controllerurl)) {
require($controllerurl);
$object = new $this->controller;
$object->model($this->controller);
if (method_exists($object, $this->method)) {
call_user_func_array([$object, $this->method], $this->params);
}
}
}

function parseUrl($url)
{
filter_var($url, FILTER_SANITIZE_URL);
$url = rtrim($url, '/');
$url = explode('/', $url);
return $url;
}
}

?>

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

<?php

class Tankguide extends Controller
{
function index()
{
$this->view('tankguide/index');
}
}

?>

основной контроллер

 <?php

class Controller
{
function __construct()
{

}

function view($viewUrl,$data=[])
{
require('header.php');
require('views/' . $viewUrl . '.php');
require('footer.php');
}

function model($modelUrl)
{
require('models/model_' . $modelUrl . '.php');
$classname = 'model_' . $modelUrl;
$this->model = new $classname;
}
}

?>

структура проекта

введите описание изображения здесь

-1

Решение

if (method_exists($object, $this->method)) вернет false для данного URL, потому что он ищет метод ussr для класса Tankguide. Либо создайте метод ussr для этого класса

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector