假设我在视图中看到这样的字段:
<li class="bigfield">
<?php echo $form->input('phone', array(
'placeholder' => 'Phone',
'label' => false,
'between' => '<br />'
)); ?>
</li>
Run Code Online (Sandbox Code Playgroud)
如果我在此字段上有验证规则并且验证失败,我会看到以下HTML:
<li class="bigfield">
<div class="input text required error">
<br>
<input name="data[Appointment][email]" type="text" placeholder="Email"
maxlength="45" value="" id="AppointmentEmail" class="form-error">
<div class="error-message">Please enter a valid email address</div>
</div>
</li>
Run Code Online (Sandbox Code Playgroud)
我很喜欢做这样的事情的错误消息的div移动到页面的整个不同的组成部分,而然后用相同<LI>与字段本身里面有它.这样做最直接的方法是什么?
我正在尝试使用CakePHP paginate()方法在SQL查询中使用"HAVING"子句.
经过一些搜索,看起来这是无法通过Cake的paginate()/ find()方法实现的.
我的代码看起来像这样:
$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');
Run Code Online (Sandbox Code Playgroud)
其中一个$字段是别名"distance".我想在距离<25时添加查询(例如,距离<25).
到目前为止,我已经看到了两个解决方法,不幸的是,这两个方法都不适合我 我见过的两个是:
1)在"group"选项中添加HAVING子句.例如'group' => 'Venue.id HAVING distance < 25'.当与分页结合使用时,这似乎不起作用,因为它会混淆执行的初始计数查询.(即尝试SELECT distinct(Venue.id HAVING distance < 25)哪个显然是无效的语法.
2)在WHERE条件之后添加HAVING子句(例如WHERE 1 = 1 HAVING field > 25)这不起作用,因为看起来HAVING子句必须在 Cake生成的查询中的WHERE条件之后放置的组语句之后.
有没有人知道使用CakePHP的find()方法做到这一点的方法?我不想使用query(),因为这会涉及大量的返工,也意味着我需要实现自己的分页逻辑!
提前致谢
我需要以老式的upload-unzip-run方式安装CakePHP 3 .
我从下载的档案文件的CakePHP/CakePHP的/标签不包含默认文件夹一样webroot,Model等等,这意味着它是不完整的.
在官方文档不涉及此.这是我发现的相关Github问题,但该人最终仍在使用Composer.
还有cakephp/app,似乎包含那些丢失的文件,但是在cakephp/cakephpcomposer.json中没有提到,即使我下载它,我也不知道如何合并软件包.
请帮忙
我已经开发了一个完整的CakePHP框架网站,我们想为移动设备(主要是iPhone/iPad)制作一个非常简单的网站版本.
有没有办法使用现有网站的新子域(例如mobile.mywebsite.com)来呈现特定的视图?我想避免复制和简化当前的一个以匹配新的要求.我不想在每次需要更改控制器操作时"重新开发"新的CakePHP网站并进行两次更改.
我想创建一个应用程序,当超级用户点击链接时,用户应该获得通知,或者更确切地说是pdf等内容,以便他们在屏幕上访问.
使用案例:当教师想要与学生分享PDF时,他应该能够通知学生可下载的PDF文件,并且必须提供链接以执行相同的操作.
我已经使用以下步骤安装了CakePHP 2.0框架:
1. Start the terminal
2. sudo mkdir /var/www/cakephp
3.sudo cp -r ~/cakephp/* /var/www/cakephp
Run Code Online (Sandbox Code Playgroud)
更改tmp文件夹permisssion
4. sudo chmod -R 777 cakephp/app/tmp
Run Code Online (Sandbox Code Playgroud)
启用mod-rewrite
5. sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
打开文件/ etc/apache2/sites-enabled/000-default并更改AllowOverride None为AllowOverride All
6. sudo vim /etc/apache2/sites-enabled/000-default
Run Code Online (Sandbox Code Playgroud)
重启Apache
7. sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)
我打开浏览器并键入地址http:// localhost/cakephp /并且我解决了这个错误消息:
警告:_cake_core_缓存无法写入"cake_dev_en美"到文件缓存在/ var/WWW /cakephp/lib/Cake/Cache/Cache.php在线310
警告:_cake_core_缓存无法写入"cake_dev_en美"来文件缓存在/var/www/cakephp/lib/Cake/Cache/Cache.php在线310
警告:在/ var/WWW/CakePHP的/应用程序的/ tmp /缓存/永久/不可写在/ var/WWW/cakephp中/ LIB /蛋糕/缓存/发动机/ FileEngine.php行320
警告:在/ var/WWW/CakePHP的/应用程序的/ tmp /缓存/模型/是不是在/ var/WWW/CakePHP的/ lib目录/蛋糕/缓存/发动机可写/ FileEngine.php行320
警告:在/ var/WWW/CakePHP的/应用程序的/ tmp /缓存/是不是在/ var/WWW/CakePHP的/ lib目录写入/蛋糕/Cache/Engine/FileEngine.php行320
要查找其值等于id数组的id的id:
$this->YourModel->find('all', array(
'conditions' => array(
"YourModel.id" => array(1, 2, 3, 4)
)
));
Run Code Online (Sandbox Code Playgroud)
我怎么能做相反的事情,找到ids与ids数组不同的元素?
我收到这个错误:
Error: [CakeSessionException] Unable to configure the session, setting session.auto_start failed.
我正在使用Cakephp 2.2.4.
编辑
看来这家伙有同样的问题:现场网站上的Cakephp Session错误并使用它
if(!isset($_SESSION)) session_start();
Run Code Online (Sandbox Code Playgroud)
内部修复错误的beforefilter方法AppController.
所以我的问题是:为什么会这样?一切都工作正常,然后突然出现这个错误.另外我已经意识到该文件夹app/tmp/sessions是空的,我已将会话配置为由Cake(in Config/core.php)处理.
使用CakePHP 3.0测试版似乎是一个简单的问题,但我搜索了文档并找不到任何东西.使用$ this-> Model-> save()插入新记录后,我想获取新创建记录的auto_increment主键ID.
使用Cake 2.x,我可以做到:
$record_id=$this->ModelName->id;
Run Code Online (Sandbox Code Playgroud)
要么
$record_id=$this->ModelName->getLastInsertID();
Run Code Online (Sandbox Code Playgroud)
然而,这些似乎都不适用于CakePHP 3.0.
谢谢
我在其他应用程序的htaccess文件中使用了以下规则,将用户从文件夹重定向到子域,但在访问该子域时从该文件夹加载内容.
# REWRITE SUBDOMAIN TO FOLDER
RewriteCond %{HTTP_HOST} ^admin\.cameron\.com$
RewriteRule !^admin/? admin%{REQUEST_URI} [NC,L]
# REWRITE FOLDER TO SUBDOMAIN
RewriteCond %{THE_REQUEST} \s/admin/([^\s]*) [NC]
RewriteRule ^ http://admin.cameron.com/%1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
所以,如果我去:http://cameron.com/admin我最终http://admin.cameron.com/
但内容是从中加载的 http://cameron.com/admin
但是这对CakePHP 2.x来说不起作用,因为它的重写显然......
在我的htaccess文件中/app/webroot我有:
<IfModule mod_rewrite.c>
RewriteEngine On
# CAKEPHP RULES
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
# REWRITE SUBDOMAIN TO FOLDER
RewriteCond %{HTTP_HOST} ^admin\.cameron\.com$
RewriteRule !^admin/? admin%{REQUEST_URI} [NC,L]
# REWRITE FOLDER TO SUBDOMAIN
RewriteCond %{THE_REQUEST} \s/admin/([^\s]*) [NC]
RewriteRule ^ http://admin.cameron.com/%1 [R=301,L]
</IfModule> …Run Code Online (Sandbox Code Playgroud) cakephp ×10
php ×4
cakephp-3.0 ×2
.htaccess ×1
ajax ×1
apache ×1
cakephp-2.0 ×1
cakephp-2.2 ×1
cakephp-2.x ×1
composer-php ×1
installation ×1
javascript ×1
jquery ×1
mod-rewrite ×1
mysql ×1
session ×1
subdomain ×1
ubuntu-10.04 ×1
validation ×1