Phealcon菗基本機能钻図
8866 ワード
ビュー層は、データをブラウザまたは他のツールに展示する役割を果たしており、Phileconでは
カスタムビューディレクトリ
Palconでは、レイヤーディレクトリの位置をカスタマイズできます.
コントローラから視覚レイヤーに変数を転送します.
レイアウトを使用して、ページ共有を実現します.最初にレイアウトファイルディレクトリを定義します.
Phalcon\Mvc\View
を介して、視聴層を管理している.コントローラにはビューが統合されていますが、デフォルトではルートにアクセスすると、ビューディレクトリの下のコントローラディレクトリのメソッド名ビューファイルが描画されます.例えば、アクセスhttp://127.0.0.1/blog/article/show/2
、Phealconは以下のように解釈します.url:Server Address:127..1 Phealcon Directory:blog Controller:article Action:show Parameter:2スケジュールはArticleController
コントローラのshowAction
を探します.view->id = $id;
}
}
最後のビューファイルapp\views\article\show.phtml
はレンダリングされ、デフォルトでは、php自体がテンプレートエンジンとして使用され、ビューファイルの拡張子は.phtml
である.カスタムビューディレクトリ
Palconでは、レイヤーディレクトリの位置をカスタマイズできます.
setViewsDir('../app/views/');
一般的にはdiに表示サービスを登録してアプリケーションを初期化します.$di->set('view', function () {
$view = new Phalcon\Mvc\View();
$view->setViewsDir('../app/views/');
return $view;
});
$application = new Phalcon\Mvc\Application($di);
変数の割り当てコントローラから視覚レイヤーに変数を転送します.
view->paramName = value;
//
$this->view->setVar('paramName', 'value');
//
$this->view->setVars([
'param1' => 'value1',
'param2' => 'value2'
]);
レイアウトを使うレイアウトを使用して、ページ共有を実現します.最初にレイアウトファイルディレクトリを定義します.
set('view', function () {
$view = new View();
$view->setViewsDir('../app/views/'); //
$view->setLayoutsDir('common/'); //
$view->setTemplateAfter('main'); // ,main.phtml
return $view;
});
コントローラ:view->pick('article/show')->setVar('id', $id);
}
}
テンプレートファイル(/app/view/common/main.phtml):
<?php echo $this-?>getContent(); ?>
</code></pre>
<p> (/app/views/article/show.phtml):</p>
<pre><code><div>
<h3> id:<?php echo $id; ??></h3>
</div>
</code></pre>
<p> :</p>
<pre><code>
<title/>
<div>
<h3> id:44</h3>
</div>
</code></pre>
<h5> </h5>
<p> , , 。 :</p>
<pre><code>//===========================
// app/views/common/nav.phtml
//===========================
<div>
<h3> </h3>
<ul>
<li> 1</li>
<li> 2</li>
</ul>
</div>
//============
// :
//============
<title/>
<?php echo $this-?>view->getPartial('common/nav'); ?>
<hr/>
<?php echo $this-?>getContent(); ?>
</code></pre>
<p> :</p>
<pre><code>
<title/>
<div>
<h3> </h3>
<ul>
<li> 1</li>
<li> 2</li>
</ul>
</div>
<hr/>
<div>
<h3> id:44</h3>
</div>
</code></pre>
<h5> </h5>
<p>Phalcon , :</p>
<table>
<thead>
<tr>
<th style="text-align:left"> </th>
<th style="text-align:left"> </th>
<th style="text-align:left"> </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">LEVEL_NO_RENDER</td>
<td style="text-align:left"> 。</td>
<td style="text-align:left"/>
</tr>
<tr>
<td style="text-align:left">LEVEL_ACTION_VIEW</td>
<td style="text-align:left"> 。</td>
<td style="text-align:left">1</td>
</tr>
<tr>
<td style="text-align:left">LEVEL_BEFORE_TEMPLATE</td>
<td style="text-align:left"> 。</td>
<td style="text-align:left">2</td>
</tr>
<tr>
<td style="text-align:left">LEVEL_LAYOUT</td>
<td style="text-align:left"> 。</td>
<td style="text-align:left">3</td>
</tr>
<tr>
<td style="text-align:left">LEVEL_AFTER_TEMPLATE</td>
<td style="text-align:left"> 。</td>
<td style="text-align:left">4</td>
</tr>
<tr>
<td style="text-align:left">LEVEL_MAIN_LAYOUT</td>
<td style="text-align:left"> 。</td>
<td style="text-align:left">5</td>
</tr>
</tbody>
</table>
<p> <code>LEVEL_ACTION_VIEW</code> <code>app/views/common/main.phtml</code>:</p>
<pre><code><?php use Phalcon\Mvc\Controller;
class ArticleController extends Controller
{
public function showAction($id)
{
$this-?>view->setVar('id', $id)->setRenderLevel(View::LEVEL_ACTION_VIEW);
}
}
</code></pre>
<p> :</p>
<pre><code><div>
<h3> id:44</h3>
</div>
</code></pre>
<p> :</p>
<pre><code>use Phalcon\Mvc\View;
$view = new View();
$view->disableLevel([
View::LEVEL_LAYOUT => true,
View::LEVEL_MAIN_LAYOUT => true
]);
</code></pre>
<h5> </h5>
<p> , Phalcon\Mvc\View::pick() 。</p>
<pre><code><?php use Phalcon\Mvc\Controller;
class ArticleController extends Controller
{
public function listAction()
{
// "viewsDir/article/search"
$this-?>view->pick('article/search');
// "viewsDir/news/list"
$this->view->pick(['news']);
// "viewsDir/article/search"
$this->view->pick([1 => 'search']); // , 0 , 1
}
}
</code></pre>
<h5> </h5>
<p> :</p>
<pre><code><?php use Phalcon\Mvc\Controller;
class ArticleController extends Controller
{
public function showAction($id)
{
//
$this-?>view->disable();
}
}
</code></pre>
<p> DI :</p>
<pre><code><?php $di-?>set('view', function () {
return (new Phalcon\Mvc\View)->disable();
});
</code></pre>
<h5> </h5>
<p> <code>Phalcon\Mvc\View\Simple</code> <code>Phalcon\Mvc\View</code> , <code>Phalcon\Mvc\View</code> 。 。<br/> :</p>
<pre><code><?php use Phalcon\Mvc\View\Simple;
$di-?>set('view', function(){
$view = new Simple();
$view->setViewsDir('../app/views/');
return $view;
});
</code></pre>
<p> :</p>
<pre><code><?php use Phalcon\Mvc\Application;
try {
$application = new Application($di);
$application-?>useImplicitView(false);
echo $application->handle()->getContent();
} catch (\Exception $e) {
echo $e->getMessage();
}
</code></pre>
<p> :</p>
<pre><code><?php use Phalcon\Mvc\Controller;
class ArticleController extends Controller
{
public function showAction($id)
{
// viewsDir/index.phtml
echo $this-?>view->render('index');
// viewsDir/article/show.phtml
echo $this->view->render('article/show', ['id' => $id]);
}
}
</code></pre>
</article>
</div>
</div>