首页 > 编程语言 >cakephp 学习2

cakephp 学习2

时间:2022-12-02 11:07:09浏览次数:33  
标签:index name 学习 var array cakephp data id


1 cakephp中,control层自动按其命名去寻找model层,比如按TaskController,则关联Task的这个model
如果不关联,可以这样

<?php
class BooksController extends AppController {
var $name = 'Books';
var $uses = array();
function index() {
$this->set('page_heading', 'Packt Book Store');
$book = array (
'book_title' => 'Object Oriented Programming
with PHP5',
'author' => 'Hasin Hayder',
'isbn' => '1847192564',
'release_date' => 'December 2007'
);
$this->set($book);
$this->pageTitle = 'Welcome to the Packt Book Store!';
}
}
?>

     其中var $uses = array();则表明不关联任何model,当然如果要关联的话,则可以
  $uses = array ( 'ModelName1', 'ModelName2' ) ;

 上面的程序中,配合的模版index.thtml为
<h2><?php echo $page_heading; ?></h2>
<dl>
<lh><?php echo $bookTitle; ?></lh>
<dt>Author:</dt><dd><?php echo $author; ?></dd>
<dt>ISBN:</dt><dd><?php echo $isbn; ?></dd>
<dt>Release Date:</dt><dd><?php echo $releaseDate; ?></dd>
</dl>

  则可以把$this->set($book);中的book数组的内容,自动输出到页面中去了.注意用这种方法的话,象
'book_title' => 'Object Oriented Programming

中的book_title,在页面中的输出模版是变为<?php echo $bookTitle; ?>,就是没了中间的下划线了

 

2 再来看个例子
   <?php
class UsersController extends AppController {
var $name = 'Users';
var $uses = array();
function index() {
if (!empty($this->data)) {
//data posted
echo $this->data['name'];
$this->autoRender = false;
}
}
}
?>

模版:
  <?php echo $form->create(null, array('action' => 'index'));?>
<fieldset>
<legend>Enter Your Name</legend>
<?php echo $form->input('name'); ?>
</fieldset>
<?php echo $form->end('Go');?> .

 

$this->data,用来保存post过来的数据, <?php echo $form->create(null, array('action' => 'index'));?>中,

调用cakephp的formhelper工具方法,第一个参数null表明不和任何model绑定,之后的array('action' => 'index'));?>

表明是要使用controll层中的index().

echo $this->data['name'];
$this->autoRender = false;

中,$this->data['name'];输出结果,$this->autoRender = false;在controll层中设置输出结果,不跟view绑定输出.

 

3 redirect跳转
   class UsersController extends AppController {
var $name = 'Users';
var $uses = array();
function index() {
if (!empty($this->data)) {
$this->redirect(array('controller'=>'users',
'action'=>'welcome', urlencode($this->data['name'])));
}
}
function welcome( $name = null ) {
if(empty($name)) {
$this->Session->setFlash('Please provide your name!',true);
$this->redirect(array('controller'=>'users',
'action'=>'index'));
}
$this->set('name', urldecode($name));
}
}

 这里的意思是,如果有页面提交的参数,则用redirect跳转到userscontroller中的welcome这个action中,同时传递参数name.

 

 

4 可以在app里写个基类,比如

class AppController extends Controller {

 ....

}

放在app目录下

   然后其他的继承之
  class BooksController extends AppController {

...

}

 

5 cakephp的组件
   在controll中的component目录中,写组件 Util.php
<?php
class UtilComponent extends Object
{
function strip_and_clean ( $id, $array) {
$id = intval($id);
if( $id < 0 || $id >= count($array) ) {
$id = 0;
}
return $id;
}
}
?>

要使用时
   class BooksController extends AppController {
 var $name = 'Books';
 var $uses = array();
var $components = array('Util');

$id = $this->Util->strip_and_clean($id,$books);

......

 

标签:index,name,学习,var,array,cakephp,data,id
From: https://blog.51cto.com/u_14230175/5906221

相关文章

  • cakephp 学习1
    1安装配置  下载1.2的版本吧,之后解压2在httpd.conf中设置  <Directory"f:/myphp5/cakephp">OptionsIndexesFollowSymLinksAllowOverrideallOrderDeny,All......
  • cakephp中加载第三方类的一点注意的
    在cakephp中,加载其他不相关的类,有三种方法,例子如下:<?phpclassTasksControllerextendsAppController{var$name='Tasks';functionin......
  • go学习笔记
    go下载https://golang.google.cn/dl/gopath配置建立一个文件夹,用来存go的项目,在环境变量中加入GOPATH,指向这个文件夹一些重要必要的配置 1、goproxy代理设置......
  • 【Docker学习系列】Docker学习2-docker设置阿里云镜像加速器
    在上一篇中,我们学会了在centos中安装docer。我们知道,镜像都是外网的,镜像一般都是比较大的,因为种种原因,我们知道,从外网下载比较慢的。所以,本文,凯哥就介绍怎么将docker的镜像......
  • MarkDown学习
    #MarkDown学习##标题###三级标题####四级标题##字体**helloworld!***helloworld!****helloworld!***##引用>此内容可以此处##分割线---***##图片......
  • Java学习-笔记本电脑常用快捷键
    #笔记本电脑常用快捷键笔记本快捷键大全图解-百度经验          ......
  • 8.golang语言学习,运算符介绍
    1.算术运算自增,自减,只能单独使用,++,--只能写在变量后面2.赋值运算符优先级,单目运算,赋值运算从右到左运算,其余从左到右,无三目运算,用if实现3.比较运算符/关系4.......
  • study-python 一个用于保存python学习的代码的仓库
    opencv-study文件夹2022年11月30创建OpenCV是一个图像处理库。它包含大量图像处理函数day01文件夹p1.py本代码功能:读取图像数据img=cv.imread(cv.samples.findFi......
  • 【转】wcf系列学习5天速成——第四天 wcf之分布式架构
    wcf系列学习5天速成——第四天wcf之分布式架构 今天是wcf系列的第四天,也该出手压轴戏了。嗯,现在的大型架构,都是神马的,nginx鸡群,iis鸡群,wcf鸡群,DB鸡群,由一个人作......
  • 【转】wcf系列学习5天速成——第五天 服务托管
    wcf系列学习5天速成——第五天服务托管 今天是系列的终结篇,当然要分享一下wcf的托管方面的知识。 wcf中托管服务一般有一下四种: Console寄宿:    ......