我正在使用phalcon开发一个动态网站,我有项目中每个页面的页眉和页脚,所以如何在整个项目中包含它而不使用伏特引擎。我不想使用伏特引擎,因为它是使用非常复杂。
/**
* Read the configuration
*/
$config = new Phalcon\Config\Adapter\Ini(__DIR__ . '/../app/config/config.ini');
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerDirs(
array(
__DIR__ . $config->application->controllersDir,
__DIR__ . $config->application->pluginsDir,
__DIR__ . $config->application->libraryDir,
__DIR__ . $config->application->modelsDir,
)
)->register();
/**
* The FactoryDefault Dependency Injector automatically register the right services providing a full stack framework
*/
$di = new \Phalcon\DI\FactoryDefault();
/**
* We register the events manager
*/
$di->set('dispatcher', function() use ($di) {
$eventsManager = $di->getShared('eventsManager');
$security = new Security($di);
/**
* We listen for events in the dispatcher using the Security plugin
*/
$eventsManager->attach('dispatch', $security);
$dispatcher = new Phalcon\Mvc\Dispatcher();
$dispatcher->setEventsManager($eventsManager);
return $dispatcher;
});
/**
* The URL component is used to generate all kind of urls in the application
*/
$di->set('url', function() use ($config){
$url = new \Phalcon\Mvc\Url();
$url->setBaseUri($config->application->baseUri);
return $url;
});
$di->set('view', function() use ($config) {
$view = new \Phalcon\Mvc\View();
$view->setViewsDir(__DIR__ . $config->application->viewsDir);
$view->registerEngines(array(
".volt" => 'volt'
));
return $view;
});
/**
* Setting up volt
*/
$di->set('volt', function($view, $di) {
$volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions(array(
"compiledPath" => "../cache/volt/"
));
return $volt;
}, true);
/**
* Database connection is created based in the parameters defined in the configuration file
*/
$di->set('db', function() use ($config) {
return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
"host" => $config->database->host,
"username" => $config->database->username,
"password" => $config->database->password,
"dbname" => $config->database->name
));
});
/**
* If the configuration specify the use of metadata adapter use it or use memory otherwise
*/
$di->set('modelsMetadata', function() use ($config) {
if (isset($config->models->metadata)) {
$metaDataConfig = $config->models->metadata;
$metadataAdapter = 'Phalcon\Mvc\Model\Metadata\\'.$metaDataConfig->adapter;
return new $metadataAdapter();
}
return new Phalcon\Mvc\Model\Metadata\Memory();
});
/**
* Start the session the first time some component request the session service
*/
$di->set('session', function(){
$session = new Phalcon\Session\Adapter\Files();
$session->start();
return $session;
});
/**
* Register the flash service with custom CSS classes
*/
$di->set('flash', function(){
return new Phalcon\Flash\Direct(array(
'error' => 'alert alert-error',
'success' => 'alert alert-success',
'notice' => 'alert alert-info',
));
});
/**
* Register a user component
*/
$di->set('elements', function(){
return new Elements();
});
$application = new \Phalcon\Mvc\Application();
$application->setDI($di);
echo $application->handle()->getContent();
答案 0 :(得分:2)
Partials是一种选择。他们会查看您提取的逻辑,以便在许多地方重复使用。
在/ shared目录下创建并存储页眉和页脚文件,然后执行以下操作:
<div class="top"><?php $this->partial("shared/header") ?></div>
...
<div class="footer"><?php $this->partial("shared/footer") ?></div>
编辑: 做类似下面的事情:
Change the layout to be used instead of using the name of the latest controller name
<?php
$this->view->setLayout('main');
有关视图的docs可以找到更多信息。