我自己学习cakephp.我试图创建一个带有changepassword功能的用户控制器.它有效,但我不确定这是否是最好的方法,我无法在这方面搜索有用的教程.这是我的代码:
class UsersController extends AppController {
var $name = 'Users';
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
function changepassword() {
$session=$this->Session->read();
$id=$session['Auth']['User']['id'];
$user=$this->User->find('first',array('conditions' => array('id' => $id)));
$this->set('user',$user);
if (!empty($this->data)) {
if ($this->Auth->password($this->data['User']['password'])==$user['User']['password']) {
if ($this->data['User']['passwordn']==$this->data['User']['password2']) {
// Passwords match, continue processing
$data=$this->data;
$this->data=$user;
$this->data['User']['password']=$this->Auth->password($data['User']['passwordn']);
$this->User->id=$id;
$this->User->save($this->data);
$this->Session->setFlash('Password changed.');
$this->redirect(array('controller'=>'Toners','action' => 'index'));
} else {
$this->Session->setFlash('New passwords differ.');
}
} else {
$this->Session->setFlash('Typed passwords did not match.');
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
password是旧密码,passwordn是新密码,password2是新密码.还有其他更多的coomon方式在蛋糕中做到吗?
我有一个项目的控制器/模型.所以这控制了项目模型等等.我有一个由pages_controller控制的主页.我想在主页上显示项目列表.这样做很简单:
function index() {
$this->set('projects', $this->Project->find('all'));
}
Run Code Online (Sandbox Code Playgroud)
我猜不是因为我得到了:
Undefined property: PagesController::$Project
Run Code Online (Sandbox Code Playgroud)
有人可以指引我朝正确的方向,
Jonesy
我试图动态地将字段添加到我的CakePHP表单中,但似乎我使用的每个方法都有自己的缺点,我无法修复.这是我尝试过的:
不要添加新输入,只需用逗号分隔单个输入中的值.这似乎很容易,在尝试爆炸输入并将每个值保存在数据库中的新行时会出现一些问题.但是当我不得不编辑这些值时,我放弃了这个想法...收集所有值并将它们内插在输入中,然后当我保存时检查是否所有值仍然存在,如果没有,则从表中删除相应的行.要做很多工作.
我尝试用JS创建新的输入.但在这里,我偶然发现了两个问题:安全组件,它正在抛出黑洞尝试(我真的需要这个组件来检查表单的完整性)以及如果验证失败,我的输入将与它们的值一起消失.我必须补充说,单个模型可能有无限的字段,因此输入将是类似的name=[Model][14][field], name=[Model][17][field],因此我不能限制安全组件不验证那些特定的输入(我知道他们的ID只有当我用JS添加它们时,无论如何,安全组件构建其数据后的方式).
使用PHP添加字段(因此,在添加新字段后重新加载页面),但我似乎无法找到如何在另一个当前字段之后准确添加字段,以及如何在验证错误时维护输入数据.
任何建议都非常感谢!
谢谢!
最初发布在cakephp Q&A上,但我会把它放在这里,希望得到一些答案.
我有一些公司,其默认状态为0,但有时会获得更高的地位.现在我想使用高状态,如果存在,但如果没有,则恢复为0.我尝试了一堆不同的方法,但我总是得到状态为0的那些或者我想要的状态,如果存在则永远不给我状态,如果不存在则给0.
只给我指定的状态,而不是给我状态为0的状态:
'Company' => array (
'conditions' => array (
'OR' => array(
'Company.status' => 0,
'Company.status' => $status,
)
)
)
Run Code Online (Sandbox Code Playgroud)
只给我0的状态:
'Company' => array (
'conditions' => array (
'OR' => array(
'Company.status' => $status,
'Company.status' => 0
)
)
)
Run Code Online (Sandbox Code Playgroud)
状态定义和代码中的数据检索:
function getCountry($id = null, $status = null) {
// Bunch of code for retrieving country with $id and all it's companies etc, all with status 0.
$status_less_companies = $this->Country->find...
if ($status) { …Run Code Online (Sandbox Code Playgroud) 我已经成功使用了Auth,但遗憾的是,它似乎只适用于Session.我希望如果用户选中"记住我"复选框,我会使用Cookie,他将登录2周.我在官方书籍和谷歌中找不到任何东西我发现只有少数而不是很棒的博客文章.有没有办法在不重写核心的情况下实现这一点?
当我更新用户模型中的数据时,不会更新Auth数据.
当我更新用户模型时,如何"刷新"$ this-> Auth-> user()返回的数据?
我不想用
$这 - > Auth->登录($数据);
更新我的用户表后
请帮助我,如果有人能给我一个例子如何使用ajax与cakephp 2.3.0一个例子是这样的
<?php echo $this->html->link('Original', '#',
array('onclick'=>'return false;', 'id'=>'remanufactured-link', 'class'=>'get-type-product-link')); ?>
<div id="content">
</div>
Run Code Online (Sandbox Code Playgroud)
当我点击original链接时,带有id的div content会发生变化.我怎么能用cakephp 2.3.0做到这一点?
我正在CakePHP 3.0中创建一个应用程序,在这个应用程序中,我想使用我编写的php类绘制数据的SVG图.在CakePHP 3项目中使用这个类的正确方法是什么?
进一步来说:
命名约定是什么?我需要使用特定的命名空间吗?
我在哪里放置包含PHP类的文件?
如何包含它并在控制器或视图中使用它?
我正在尝试在Cakephp中创建存储过程.我在MYSQL中创建了Procedure并在AppModel.php中创建了全局函数来命中过程.AppModel中的函数是sProcedure.现在我有两个条件,我可能有变量从程序返回或可能有直接结果集,例如.我为Pagination创建了.虽然它射击我的程序但没有返回任何结果.我的功能是否需要修改?
public function sProcedure($name = NULL, $inputParameter = array(), $outputParameter = array()) {
$this->begin();
$parameter = "";
$outputParam = "";
foreach ($inputParameter as $params) {
$parameter .= $parameter == "" ? " '$params' " : ", '$params' ";
}
if (count($outputParameter) > 0) {
foreach ($outputParameter as $prm) {
$outputParam .= $outputParam == "" ? " @$prm " : ", @$prm ";
}
}
$parameter = ($outputParam) ? $parameter . ", " . $outputParam : $parameter;
$this->query("CALL `$name`($parameter);");
$result = …Run Code Online (Sandbox Code Playgroud) cakephp ×10
php ×6
ajax ×1
cakephp-2.0 ×1
cakephp-3.0 ×1
cookies ×1
favicon ×1
forms ×1
mysql ×1
session ×1