Няшка Няшная
7.12.2012 - 12:13
Подскажите, нубу (т.е. мне)!
Как, взяв за основу вот эту
статью о реализации MVC, сделать действие (метод) меняющимся? Т.е., чтоб была возможность вывода, например, новости ( example.com/news/123 ) или пользователя ( example.com/user/*логин юзера* ).
В статье методы строго определенного названия, например example.ru/contacts/feedback. А нужно, чтоб название "метода" бралось из базы.
Подскажите что можно (нужно) изменить в подобном коде!
Сразу попрошу - готовые фрейморки не предлагать. Есть интерес самой сделать и научиться!
vagrand
7.12.2012 - 14:40
Вы конечно няшная няшка, но читать всю статью ради того что бы понять как вам и что нужно сделать вряд ли кто-то станет.
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Игорь_Vasinsky
7.12.2012 - 15:31
vagrandЗолотые слова
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Няшка Няшная
7.12.2012 - 19:09
Допустим! ;)
Тогда подскажите, как, на примере этого кода, реализовать возможность рпосмотра отдельных новостестей ( example.com/news/123 ) или данных о ользователях ( example.com/user/*логин* ).
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
index.
phpini_set('display_errors', 1);
require_once 'core/model.php';
require_once 'core/view.php';
require_once 'core/controller.php';
require_once 'core/route.php';
Route::start();
route.
phpclass Route
{
static function start()
{
$controller_name = 'Main';
$action_name = 'index';
$routes = explode('/', $_SERVER['REQUEST_URI']);
if ( !empty($routes[1]) )
{
$controller_name = $routes[1];
}
if ( !empty($routes[2]) )
{
$action_name = $routes[2];
}
$model_name = 'Model_'.$controller_name;
$controller_name = 'Controller_'.$controller_name;
$action_name = 'action_'.$action_name;
$model_file = strtolower($model_name).'.php';
$model_path = "application/models/".$model_file;
if(file_exists($model_path))
{
include "application/models/".$model_file;
}
$controller_file = strtolower($controller_name).'.php';
$controller_path = "application/controllers/".$controller_file;
if(file_exists($controller_path))
{
include "application/controllers/".$controller_file;
}
else
{
Route::ErrorPage404();
}
$controller = new $controller_name;
$action = $action_name;
if(method_exists($controller, $action))
{
$controller->$action();
}
else
{
Route::ErrorPage404();
}
}
function ErrorPage404()
{
$host = 'http://'.$_SERVER['HTTP_HOST'].'/';
header('HTTP/1.1 404 Not Found');
header("Status: 404 Not Found");
header('Location:'.$host.'404');
}
}
controller_main.
phpclass Controller_Main extends Controller
{
function action_index()
{
echo 'Это главная страница контроллера main!';
}
function action_test()
{
echo 'Это тестовая страница контроллера main!';
}
}