Phealcon菗基本機能钻図

8866 ワード

ビュー層は、データをブラウザまたは他のツールに展示する役割を果たしており、Phileconでは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>