Phalcon 4 教程(5)-- controller扩展以及向view传递参数

前言:前面的课程已经把Helloworld和view的基本原理进行了阐述,下面将对controller和view进一步阐述。

1.controller接受参数
修改StoreController.php代码如下.这里使用了部分PHP 7 scalar数据类型的特性。

<?php
declare(strict_types=1);

class StoreController extends ControllerBase
{
    public function indexAction()
    {
    }

    // process/yy/30/true
    public function processAction(string $username = "GG",int $age = 12,bool $expired = false ):void{
        echo "Processing<br>";
        echo $username,"<br>";
        echo $age,"<br>";
        echo $expired,"<br>";
    }
}

浏览器敲入http://localhost/store/process/yy/30/false
显示如下

在这里插入图片描述
2.进一步把接受的参数传给其他action
把接受的参数转给testAction, 代码如下.

<?php
declare(strict_types=1);

class StoreController extends ControllerBase
{

    public function indexAction()
    {
    }

    // process/yy/30/false
    public function processAction(string $username = "GG",int $age = 12,bool $expired = false ):void{
        echo "Processing<br>";
        echo $username,"<br>";
        echo $age,"<br>";
        echo $expired,"<br>";
        
        $this->dispatcher->forward([
            'controller'=>'store',
            'action'=>'test'
        ]);
    }

    public function testAction(){
        echo 'Just for TESTING';
    }
}

效果如下。
在这里插入图片描述

3.StoreController.php只初始化函数
有时候需要对contrller进行一些初始化操作,而php OOP中默认的构造函数__construct在controller类不能使用(代码如下)

<?php
declare(strict_types=1);

class StoreController extends ControllerBase
{
    public function __construct(){
    }

会报错,如果需要,需要使用onConstruct,则不会报错

class StoreController extends ControllerBase
{
    public function onConstruct(){
    }

另一个选择是创建一个initialize函数,如下

<?php
declare(strict_types=1);

class StoreController extends ControllerBase
{
    public function onConstruct(){
    }
    public function initialize(){
        echo '****let\'s goo ******';
    }

接上例,效果如下:
在这里插入图片描述
4.传递参数给view
首先,创建app/views/store/process.pthml文件,用以渲染processAction,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php echo 'Got your name = ', $username,'<br>';?>
    <?php echo 'Got your age = ', $age,'<br>';?>
    <?php echo 'Got your status = ', $single,'<br>';?>
</body>
</html>

修改StoreController.php文件

<?php
declare(strict_types=1);

class StoreController extends ControllerBase
{
    public function onConstruct(){
    }

    public function initialize(){
        echo '****let\'s goo ******';
    }

    public function indexAction()
    {
    }

    // process/yy/30
    public function processAction(string $username = "GG",int $age = 12,bool $expired = false ):void{
        $this->view->setVar('username',$username);
        $this->view->setVar('age',$age);
        $this->view->setVar('single',$expired);
    }

    public function testAction(){
        echo 'Just for TESTING';
    }
}

效果如下
在这里插入图片描述

后记: 文件目录中app/views/index.phtml是个最高的模板,其他的内容都是以
<?php echo $this->getContent(); ?>
而与该模板进行拼装。
比如,app/views/signup/index.phtml的内容其实是被引入到app/views/index.phtml进而进行显示的。而诸如bootstrap的文件也是在这个模板中引入的。

Phalcon是一个开放源码的、全堆栈的PHP5框架,使用C扩展编写,专门为高性能优化,无需使用C语言,所有函数都以PHP类的方式。PhalconPHP 3.4.0 更新日志:2018-05-28添加Phalcon\Mvc\Router::attach直接将路由对象添加到路由器#13326中;增加了侦听请求的功能:beforeAuthorizationResolve和request:afterAuthorizationResolve事件,这种能力可以使用自定义授权解析器#13327;在Phalcon\Mvc\Model中添加呼叫事件afterFetch:刷新#12220;添加Phalcon\Http\Response::getReasonPhrase以从状态报头#13314中检索原因词组;添加Phalcon\Loader::setFileCheckingCallback来设置内部文件存在解析器#13360;增加了为Phalcon\Mvc\Collection::aggregate#12302传递聚合选项的功能;添加Phalcon\Crypt::setHashAlgo来设置用于计算消息摘要的散列算法的名称#13379;添加Phalcon\Crypt::getHashAlgo以获得用于计算消息摘要的散列算法的名称#13379;添加Phalcon\Crypt::useSigning来设置是否必须使用计算消息摘要(注意:此功能将在Phalcon4.0.0中默认启用)#13379;添加了Phalcon\Crypt::getAvailableHashAlgos以获得适用于计算消息摘要的注册散列算法列表#13379;添加了Phalcon\Crypt::__构造,现在可以在对象构造中设置密码,并且可以启用计算消息摘要,而无需明确调用setCipher或useSigning#13379;添加了Phalcon\Crypt\Mismatch,在Phalcon\Crypt中抛出的异常将使用这个类#13379;添加Phalcon\Http\Cookie::setSignKey来设置用于生成消息认证代码的符号密钥(例如消息摘要);添加了Phalcon\Http\Response\Cookies::setSignKey来设置用于生成消息认证代码的符号密钥(例如消息摘要);更改了Phalcon\Crypt::setCipher,以便在设置密码算法期间重新配置IV长度;更改了Phalcon\Crypt::setCipher,以便在密码不可用的情况下抛出Phalcon\Crypt\Exception;修复Phalcon\Debug\Dump::output的回归(#13308)以正确使用详细模式#13315;修正Phalcon\Mvc\Model\Query\Builder::having和Phalcon\Mvc\Model\Query\Builder::在哪里正确合并绑定类型#11487;修正Phalcon\Mvc\Model::setSnapshotData以正确设置旧快照;超级全球不存在时不要抛出异常#13252,#13254,#12918。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值