`

php框架yii入门遇到的问题

阅读更多

最近在学习php 一个流行的框架yii,听说封装得很好,但是在学习过程中也遇到了一些问题,先总结如下:

 

(1)The table "{{tbl_user}}" for active record class "User" cannot be found in the database.

详细错误:

 错误原因:实体类User 的方法tableName 返回的是“'{{tbl_user}}'”

/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return '{{tbl_user}}';
	}

 但是在应用配置文件(D:\study\yii\yii\demos\shop_goods\protected\config\main.php)中,没有指定tablePrefix 。

解决方法:

方法一:去掉两边的花括号,改为:

/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tbl_user';
	}

 

方法二:在应用配置文件(D:\study\yii\yii\demos\shop_goods\protected\config\main.php)中指定

tablePrefix

(2)使用CPasswordHelper::verifyPassword($password,$this->password); 有问题

return CPasswordHelper::verifyPassword($password,$this->password); 有问题,
返回false,但是实际上$password,$this->password 是相等。

(3)php中调用成员变量时使用->,而不是.

有java工作经验的开发者,在使用yii框架时非常容易使用. 来引用成员变量,这是java的语法,不是php的语法。

 

(4)对于注册页面,在对应的controller的action方法中,会使用$_POST['RegisterForm'] 来获取表单输入项的值,那么$_POST中的属性名(如RegisterForm)是由什么决定的呢?

是由render方法的第二个参数决定的

 

(5)如何区分场景

比如用户注册时需要输入email和repassword,而用户登录时不需要输入email和repassword。这就是不同的场景校验的要素不同。如何实现呢?

在RegisterForm 的rules()方法中

public function rules()
	{
		return array(
			// username and password are required
			array('username, password', 'required'),
			array('email,repassword', 'required','on'=>'register'),
			// rememberMe needs to be a boolean
			array('rememberMe', 'boolean','on'=>'login'),
			// password needs to be authenticated
			array('password', 'authenticate','on'=>'login'),
		);
	}

 'on'=>'register' 表示在“register”场景中才需要校验。

那么如何选择场景呢?

在controller 中new RegisterForm 时指定

$model=new RegisterForm('register');

 

例如

array('username, password', 'required', 'on'=>'login, register'),
array('email', 'required', 'on'=>'register'),
如上所示, username 和password 特性在login 场景中是必填项。而username, password 和email 特性在register 场
景中是必填项。于是,如果我们在login 场景中执行块赋值,就只有username 和password 会被块赋值。因为只有它
们出现在login 的验证规则中。另一方面,如果场景是register ,这三个特性就都可以被块赋值。
// 在登录场景中
$model=new User('login');
if(isset($_POST['User']))
$model->attributes=$_POST['User'];
// 在注册场景中
$model=new User('register');
if(isset($_POST['User']))
$model->attributes=$_POST['User'];

 

 (6)如何批量获取表单的输入值

$model->attributes=$_POST['RegisterForm'];

 在一个类的实例被创建后,我们通常需要用最终用户提交的数据填充它的特性。这可以通过如下块赋值( massive
assignment)方式轻松实现:
$model=new LoginForm;
if(isset($_POST['LoginForm']))
$model->attributes=$_POST['LoginForm'];
最后的表达式被称作块赋值(massive assignment) ,它将$_POST['LoginForm'] 中的每一项复制到相应的模型特性
。这相当于如下赋值方法:
foreach($_POST['LoginForm'] as $name=>$value)
{
if($name 是一个安全的特性)
$model->$name=$value;
}

 

(7)表单中的* 是怎么产生的

是$model 中的rules() 方法决定的.

 我们看到邮箱没有*,那是因为在RegisterForm 的rules() 没有约束email 是必须的.

public function rules()
	{
		return array(
			// username and password are required
			array('username, password', 'required','on'=>'register,login'),
			array('repassword', 'required','on'=>'register'),
			// rememberMe needs to be a boolean
			array('rememberMe', 'boolean','on'=>'login'),
			// password needs to be authenticated
			array('password', 'authenticate','on'=>'login'),
			// 在注册场景中,密码repassword 必须和password 一致。
			array('repassword', 'compare', 'compareAttribute'=>'password', 'on'=>'register'),
		);
	}

 

 

(8)include(authenticate.php): failed to open stream: No such file or directory

有问题的代码:

 

原因:没有authenticate()方法

把30注释掉就好了.

  • 大小: 115.4 KB
  • 大小: 54.9 KB
  • 大小: 23.7 KB
  • 大小: 52 KB
0
0
分享到:
评论

相关推荐

    Yii框架快速入门

    Yii框架是一款基于组件的高性能PHP框架,用于开发Web2.0应用。它的设计目标是高效、易用且可扩展。Yii这个名字来源于一个中文词汇“易”,意味着简单和便捷。本教程将带你逐步走进Yii的世界,了解其核心概念,以及...

    YII框架入门

    Yii框架是一款高性能的PHP框架,用于快速开发Web应用程序。它具有丰富的特性,包括MVC(模型-视图-控制器)架构、AR(Active Record)对象关系映射、DAO(数据访问对象)数据库访问层,以及强大的缓存支持。接下来...

    YII框架入门视频教程

    Yii,一个高性能的PHP框架,被广泛用于开发Web 2.0应用程序。本教程通过一系列视频,逐步讲解了框架的基本概念、数据库操作以及如何构建数据模型。 在【0507-01-yii简介】中,你会了解到Yii的起源、特点以及它为何...

    yii快速入门教程--一个非常好的php框架

    ### Yii快速入门教程知识点 #### 一、基本概念 **1. 入口文件** - **功能**: 入口文件是整个Yii应用的第一个脚本,它负责加载Yii框架以及初始化应用。 - **内容**: 通常包含如下代码: ```php <?php $yii = ...

    yii 2.0 框架安装包

    Yii 2.0 框架是一款高效、可扩展且易于学习的PHP框架,专为构建高性能的Web应用而设计。Yii,发音为"易",代表简单和优雅,是Yee或Yes It Is的英文缩写。这个框架遵循模型-视图-控制器(MVC)设计模式,提供了一系列...

    PHP的Yii框架入门使用教程

    本教程将引导你入门Yii框架,从安装到建立第一个应用,逐步了解其基本结构和功能。 首先,让我们详细讨论安装过程。安装Yii框架非常简单,主要包括两个步骤: 1. 从官方网站`yiiframework.com`下载最新版的Yii框架...

    yii框架中文文档、yii中文手册教程

    Yii框架是一款高效的PHP...同时,Yii社区活跃,有许多优秀的教程和示例代码供学习参考,遇到问题时也能得到及时的帮助。无论是初学者还是经验丰富的开发者,这些中文文档和教程都是学习和掌握Yii框架不可或缺的资源。

    Yii框架学习笔记.pdf

    以上便是Yii框架学习笔记的核心内容,涵盖了从基础入门到高级特性的全面知识点。通过这些知识点的学习,开发者可以深入理解Yii框架的工作原理和使用方法,从而在实际开发中更高效地运用Yii框架构建Web应用。

    PHP Yii框架开发实例

    ### PHP Yii框架开发实例知识点详解 #### 一、部署Yii环境 **1.1 配置基础环境** - **PHP开发环境**: 在开始使用Yii框架之前,首先要确保PHP开发环境已经搭建完毕。一个典型的PHP开发环境包括Apache作为Web服务器...

    yii框架快速入门--(中文版)并附redmine-wiki对yii的解释

    Yii框架是PHP开发领域中的一个高效且强大的框架,尤其适合构建大规模的Web应用程序。它的名字“Yii”在中文中意为“易”,象征着其设计理念——简洁、易用且高效。Yii采用面向对象编程,强调代码重用和遵循最佳实践...

    2014年辛星PHP教程秋季版之yii框架教程

    首先,Yii是一个高级的PHP框架,广泛应用于Web开发,以敏捷和性能著称。它的核心思想包括快速开发、安全性以及专业性,旨在为开发者提供一个易于使用、功能丰富且性能优越的开发环境。Yii框架支持MVC(模型-视图-...

    YII快速入门教程

    ### YII快速入门教程知识点详解 #### 一、基本概念 **1.... - **定义**: 入口文件是启动Yii框架...以上内容概述了YII框架的基本概念、表单处理、数据库操作、缓存机制以及扩展机制,为初学者提供了一个全面的入门指南。

    Yii快速入门教程+2.0中文手册

    本教程结合“Yii快速入门教程”和“Yii 2.0中文手册”,将帮助初学者快速掌握Yii框架的基本概念和核心功能。 1. **Yii框架概述** Yii是一个基于组件、用于开发大型Web应用的高性能框架。它强调代码的重用性和可...

    yii框架笔记,绝对值得经典

    Yii框架是一款开源的PHP Web应用程序开发框架,采用MVC(Model-View-Controller)架构模式,以其高性能和代码重用性著称。Yii由美国华人Qiang Xue创建,并于2008年首次发布。该框架的设计理念在于提供一种快速、安全...

    2009年最优秀的PHP框架-YII

    ### 2009年最优秀的PHP框架-YII:构建简易博客系统 #### 一、简介与背景 在2009年的Web开发领域中,YII框架因其高性能、安全性及易用性等特点脱颖而出,成为了当时最受欢迎的PHP框架之一。本书《2009年最优秀的PHP...

    Yii快速入门教程(完全整理)

    总之,Yii是一个强大且灵活的PHP框架,通过学习这个快速入门教程和中文手册,你将能够利用Yii的诸多功能,高效地开发高质量的Web应用程序。无论是初学者还是经验丰富的开发者,都可以从中受益匪浅。

    Yii权威指南(非常适合新手入门)

    - **标签**: "yii 入门 新手 php mvc" **解释**: - **Yii**: 一种基于PHP的开源Web应用程序开发框架,采用MVC(Model-View-Controller)设计模式。 - **PHP**: 脚本语言,主要用于Web开发,支持多种数据库。 - **...

Global site tag (gtag.js) - Google Analytics