phalcon-入门篇3(优美的URL路由与Config)

2024-05-31 07:32

本文主要是介绍phalcon-入门篇3(优美的URL路由与Config),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

phalcon-入门篇3(优美的URL路由与Config)

本教程基于phalcon2.0.9版本

前言

先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台

优美的URL不论实在MVC开发中还是API开发中都是很重要的,它是一套规范能够帮助记忆,虽然phalcon原生的url地址并不友好但是可以通过web容器进行URL重写达到想要的效果,在本节还会对一个很重要的模块进行讲解那就是使用phalcon读取配置文件,那么就开始本节的学习吧!

注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术

附上:

喵了个咪的博客:http://w-blog.cn

教程代码库:http://git.oschina.net/wenzhenxi/Phalcon-tutorial

phalcon官网地址:https://phalconphp.com

phalcon中文社区:http://www.iphalcon.cn/

1. 优美的URL路由

注意:phalcon.w-blog.cn可以自行替换成自己的url

在开始之前我们做一个实验,在上一小节我们成功运行了hello word例如如下URL:

http://phalcon.w-blog.cn/phalcon/public/

我们请求一下:

http://phalcon.w-blog.cn/phalcon/public/?_url=/Index/index

会惊讶的发现居然结果是一样的,其实phalcon是通过最后一种方式请求的也就是带有?_url=/控制器名称/Action名称,这种方式请求的为了进一步测试我们在IndexController.php中加入如下方法:

// 测试Action
public function testAction() {echo "<h1>This is a testAction!</h1>";
}

在试着请求:

http://phalcon.w-blog.cn/phalcon/public/?_url=/Index/test

大家会发现一个问题,还是显示了This is a index!这是为什么呢这个是应为被默认的view层渲染了那么我们把view层结构改一下如下:

这样的话只有请求到Index/index的时候才会进入到view层,那么这个时候再次请求我们就能得到如下结果:

那么问题来了我们今天的目的是什么,对的我们要让url优雅,我们要利用web容器的url重写功能.
.

1.1 Nginx

把一下语句加入到nginx.conf中你的server{}中,下面我们来讲解一下这段配置:

#第一段话的意思是 当URL中包含 /phalcon/ 的话进入到下面的url 重写 这样定制的好处是针对项目其他的文件请求方式不会被改变
location  /phalcon/ { 
#这句话的意思是nginx的重写URL规则 可以看到把 /phalcon/后面的内容 放到了 public/index.php?_url=/ 后面rewrite ^/phalcon/(.*)$ /phalcon/public/index.php?_url=/$1;}

1.2 Apache

在phalcon目录下创建.htaccess文件加入如下语句 主要作用是指向到public

<IfModule mod_rewrite.c>RewriteEngine onRewriteRule  ^$ public/    [L]RewriteRule  ((?s).*) public/$1 [L]
</IfModule>

在public加入如下语句 主要作用是定向赋值给_url

<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

1.3 优美的URL

如果大家已经配置好了试着访问一下以下地址:(这里Nginx亲测过,Apache未测试)

访问默认的Index/index : http://phalcon.w-blog.cn/phalcon/

访问Index/test http://phalcon.w-blog.cn/phalcon/Index/test

2. 配置文件Config

phalcon的配置文件支持四种类型分别是ini,Json,php,Yaml在教程里面分别对我们常用的三种ini,Json,php做简单的说明yaml再此不再做说明

2.1 准备工作

我们先在项目目录下创建如下文件已经目录

我们在ini.in中加入如下语句:

 [database]adapter = Mysqlhost = localhostusername = scottpassword = cheetahdbname = test_db

在json.json中加入:

{"phalcon":{"baseuri":"\/phalcon\/"},"models":{"metadata":"memory"}}

在php.php中加入:

return array('database' => array('adapter' => 'Mysql','host' => 'localhost','username' => 'scott','password' => 'cheetah','dbname' => 'test_db'),'phalcon' => array('controllersDir' => '../app/controllers/','modelsDir' => '../app/models/','viewsDir' => '../app/views/'));

2.2 获取配置项

上面我们已经配置好了文件以及目录,那么问题就是我们要如何使用,当然所有的一切都要在index.php中初始化配置也不例外,代码如下:

//在文件顶部加上 如下语句 作用是加载命名空间中的类
use Phalcon\Config\Adapter\Ini as ConfigIni;
use Phalcon\Config\Adapter\Json as ConfigJson;
use Phalcon\Config\Adapter\Php as ConfigPhp;

为们在代码中加入如下初始化项

$ConfigIni  = new ConfigIni('../Config/ini.ini');
$ConfigJson = new ConfigJson('../Config/json.json');
$ConfigPhp  = new ConfigPhp('../Config/php.php');

这个时候我们就已经可以开始使用配置了:

echo $ConfigIni->database->host . '</br>';
echo $ConfigJson->phalcon->baseuri . '</br>';
echo $ConfigPhp->database->username . '</br>';

我们再次请求会发现有如下输出

那么恭喜你已经成功读取到了配置文件

3. 小结

我们回顾一下今天教程的内容,优美的URL通过web容器Nginx或者Apache的URL重写来实现,还有phalcon中的3种配置文件的使用,那么到这里我们已经对phalcon有了一最基本的了解,下一节我们一同来学习phalcon的log的使用以及Session的使用,谢谢大家的支持!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

Phalcon技术交流:364520707 PhalCon中文社区:287484785 欢迎大家的加入!

这篇关于phalcon-入门篇3(优美的URL路由与Config)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017567

相关文章

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

Spring Boot 入门篇

一、简介 Spring Boot是一款开源的Java Web应用框架,旨在简化Spring应用的初始搭建以及开发过程。它整合了Spring技术栈中的诸多关键组件,为开发者提供了一种快速、简便的Spring应用开发方式。Spring Boot遵循“约定优于配置”的原则,通过自动配置、起步依赖和内置的Servlet容器,极大地简化了传统Spring应用的配置和部署过程。 二、Spring Boot

(入门篇)JavaScript 网页设计案例浅析-简单的交互式图片轮播

网页设计已经成为了每个前端开发者的必备技能,而 JavaScript 作为前端三大基础之一,更是为网页赋予了互动性和动态效果。本篇文章将通过一个简单的 JavaScript 案例,带你了解网页设计中的一些常见技巧和技术原理。今天就说一说一个常见的图片轮播效果。相信大家在各类电商网站、个人博客或者展示页面中,都看到过这种轮播图。它的核心功能是展示多张图片,并且用户可以通过点击按钮,左右切换图片。

第49课 Scratch入门篇:骇客任务背景特效

骇客任务背景特效 故事背景:   骇客帝国特色背景在黑色中慢慢滚动着! 程序原理:  1 、 角色的设计技巧  2 、克隆体的应用及特效的使用 开始编程   1、使用 黑色的背景: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7d74c872f06b4d9fbc88aecee634b074.png#pic_center)   2

【vue3|第28期】 Vue3 + Vue Router:探索路由重定向的使用与作用

日期:2024年9月8日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉在这里插入代码片得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083;0.98365 = 0.0006 说

Nacos Config 配置中心支持配置共享

文章目录 一、什么是配置中心二、Nacos Config2.1 Nacos Config 工作原理 (★)2.2 Nacos Config 的使用2.3 动态刷新2.4 配置共享2.4.1 同一个微服务的不同环境之间共享配置2.4.2 不同微服务中间共享配置 一、什么是配置中心 微服务架构下关于配置文件的存在以下问题: 配置文件相对分散。在一个微服务架构下,配置文件会随

使用http-request 属性替代action绑定上传URL

在 Element UI 的 <el-upload> 组件中,如果你需要为上传的 HTTP 请求添加自定义的请求头(例如,为了通过身份验证或满足服务器端的特定要求),你不能直接在 <el-upload> 组件的属性中设置这些请求头。但是,你可以通过 http-request 属性来自定义上传的行为,包括设置请求头。 http-request 属性允许你完全控制上传的行为,包括如何构建请求、发送请

【轻松上手postman】入门篇:如果根据接口文档写postman接口用例

在我们平时的测试工作中除了最基本的网页测试外,也会遇到没有页面但需要验证内部逻辑正确性的接口测试任务,在遇到没有网页的测试任务时,我们就要使用到接口测试工具来模拟对程序代码触发。 在接到接口测试任务时,一般都会拿到接口需求文档,没接触过接口测试的人看到接口文档正常反应一脸闷🤣不知如何下手怎么开始测试😓,下面我就来讲讲如何将接口文档上的一个个接口转换成postman用例 首先需要安装

入门篇:神奇的Annotation

涅槃1992 关注 2016.12.25 23:41* 字数 4964 阅读 1059评论 3喜欢 29 前面写了Android 开发:由模块化到组件化(一),很多小伙伴来问怎么没有Demo啊?之所以没有立刻放demo的原因在还有许多技术点没说完. 今天我们就来细细评味Java当中Annotation,也就是我们常说的注解. 本文按照以下顺序进行:元数据->元注解->运行时注解->编译时

url参数中带有号,需要用先把url做个解析,使其方便在网络上传递

需求:提交异步通知地址给宝付的投标接口,发现投标成功后,异步通知地址没有被调用 排查:通过和宝付技术对接,发现是203,地址重定向错误。深入排查,发现异步通知返回的地址中&号之后的参数宝付没有收到 结论:表单提交的参数中的异步通知地址中的&号没有做urlencode()处理导致传递丢失参数。 地址参数中带有&号,java在做提交的时候,不能正确传递&,导致地址中&之后的内容丢失。故此需要ur