Objective-C Hello World实例
这里示范一个基础的Hello World程序。
1 |
|
以上是Xcode的旧版”Hello World”程序代码,在4.3.1 xcode的代码为:
1 |
|
这里示范一个基础的Hello World程序。
1 | #import<Foundation/Foundation.h> |
以上是Xcode的旧版”Hello World”程序代码,在4.3.1 xcode的代码为:
1 | #import <Foundation/Foundation.h> |
对于喜欢操作sql语句的人来说和对于sql语句基础不是很好的,能够明白每个CRUD操作是什么意思很重要,简单的介绍个例子,代码如下:
1 | <?php |
Yii在IIS下的伪静态处理是,在根目录建立httpd.ini文件,然后使用IIS的伪静态规则,写入自己需要的规则:
我购买的虚拟主机在香港,因为windows的主机比较多,于是我也中招了,于是四处寻求方法,四处尝试,终于找到了适合Yii的伪静态规则:
代码如下:
1 | [ISAPI_Rewrite] |
Gii 是基于 web 的 Yii framework 代码生成器。
开始配置
可以在你的应用程序配置文件中增加以下代码以使用该模块:
1 | 'modules' => [ |
运行
打开浏览器,输入 http://localhost/yourapp/index.php?r=gii
,使用刚才在配置文件中填的 username 和 password 登录。
yii自己是带有自动分页功能的。只要在对应的controller里面,类似下面这样鞋代码,就会实现的
1 | $dataProvider = new CActiveDataProvider( |
但是样式还是yii中已经写好的,那么对于我,我要改掉这个样式,使用我提供的样式,可以像我下面这样写
1 | <?php |
其实只要添加自己对应的class属性就可以了,因为yii有自己默认的class属性,这个是比较简单。
下次我们可以看看,如何修改侧边下拉框,改为自己的喜欢的样式。
Yii的Active Recorder包装了很多。
特别是把SQL中 把where,order,limit,IN/not IN,like等常用短句都包含进CDbCriteria这个类中去,这样整个代码会比较规范,一目了然。
1 | $criteria = newCDbCriteria; |
生产环境中的 Web 应用常需要具有完善的事件日志功能。在我们的博客应用中,我们想记录它在使用时发生的错误。这些错误可能是程序错误或者是用户对系统的不当使用导致的错误。记录这些错误可以帮助我们完善此博客应用。
为启用错误日志功能,我们修改 应用配置 如下,
1 | return [ |
通过上述配置,如果有错误(error)或警告(warning)发生,其详细信息将被记录并保存到位于/wwwroot/blog/protected/runtime目录的文件中。
log组件还提供了更多的高级功能,例如将日志信息发送到一个 Email 列表,在 JavaScript 控制台窗口中显示日志信息等。更多详情,请参考指南。
hexo在处理markdown文档的时候,默认将heading的内容作为了id来处理锚点,如果是英文是没有问题的。
1 | ## 我的标题 |
处理后的html内容
1 | <h2 id="我的标题"><a href="#我的标题" class="headerlink" title="我的标题"></a><a href="#我的标题">我的标题</a></h2> |
但是作为标题是中文的话就会有问题,以为在js的代码中,id是中文是不支持的,这会导致很多js库无法正常运行
找了很多资料,其中就有安装hexo-renderer-markdown-it
但是我自己亲自测试下来,还是很复杂,然后也没有解决我的问题,于是我思考这个hexo不会烂到这个程度吧
于是我看到了一种写法
1 | ## [我的标题](#custom-id) |
处理后的html内容
1 | <h2 id="custom-id"><a href="#custom-id" class="headerlink" title="我的标题"></a><a href="#custom-id">我的标题</a></h2> |
哎,可以,就这么轻松的解决了,不需要什么卸载安装什么的
1 | function filters() |
在用户表中新增一列,列名 roles。建立相应的模型。在这里它将被命名为 “User”。
当添加用户可以给他们分配角色 “管理员”,“用户”,“员工”等等。
在文件 protected/components/UserIdentity.php 添加如下内容:
1 | class UserIdentity extends CUserIdentity |
重要的一行是
1 | $this->setState('roles', $record->roles); |
他给会话增加了用户角色。你可以使用如下代码获取用户角色。
1 | Yii:app()->user->getState("roles") |
或
1 | Yii::app()->user->roles |
在 protected/components 文件夹下修改并创建文件 WebUser.php ,然后重写 checkAccess() 方法。
1 | <?php |
在 checkAccess() 方法中你可以定义自己的逻辑。
确保类可以被yii使用配置文件 “protected/config/main.php” 必须包含以下内容:
1 | 'components' => [ |
旁注:
[CWebUser::checkAccess()] 通常连接yii的验证系统。这里我们使用一个简单的处理角色的系统来替换[CAuthManager] 定义的分级系统。详细教程参加 Role-Based Access Control
在你的 PHP 代码中使用 Yii::app()->user->checkAccess('admin')
来检查当前用户是否有 ‘admin’ 角色。
当用户拥有 “staff” 或 “admin” 角色时,调用 Yii::app()->user->checkAccess("staff")
将会返回 true。
在控制器中你可以使用 accessRules() 中的 “roles” 属性进行过滤。
见下面的例子。 怎样过滤动作 控制器必须包含以下代码:
1 | function filters() |
这里对控制器中的 “admin” 动作进行了限制访问: 只有拥有 “staff” 或 “devel” 角色才可以访问。 像API文档中描述的那样 CAccessRule, “roles” 属性实际上调用的是 Yii::app()->user->checkAccess()
方法。 怎样根据角色显示不同菜单 你只需使用一个基于用户角色的菜单。例如
1 | <?php |
一个通常的需求,用户只能够修改自己的数据。在这种情况下,用户的角色是没有任何意义的:将要修改的数据。 这就是为什么 [CWebUser::checkAccess()] 有一个可选的参数 “$param” 。现在假设我们要检查的是一个用户是否有权更新Post记录的权限。我们可以这样写:
1 | if (Yii::app()->user->checkAccess('normal', $post)) { |
当然 WebUser::checkAccess()
必须被扩展来使用 “$params” 参数。这将取决于你的应用程序的逻辑。比如, 这可能是非常简单的 $post->userId == $this->id
。
下面举个例子:
如果我想写个截取字符串长度的函数功能,可以在extensions目录下面新建一个文件,命名为Helper.php
代码如下:
1 | <?php |
然后就可以在自己的代码中引用了Helper::truncate_utf8_string('XXXXXXXXXXX',10,'.......');
如果出现问题可以在config/main.php
中加入在import引入要加载扩展的目录
类似:
1 | 'import'=> array( |