我开始使用CakePHP,我在设置Auth组件时遇到了问题.每次用户注销时,cake都会将其重定向回登录. 您将看到我在logout()期间尝试删除/取消设置某些cookie.这是因为我正在使用Wordpress网站设置单点登录,因此我希望用户从两个站点注销.
我的AppController:
class AppController extends Controller {
public $components = array(
'Session',
'Cookie',
'Auth' => array(
'loginRedirect' => array('controller' => 'questions', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
)
);
public function beforeFilter() {
$this->Auth->allow('index', 'view', 'login', 'logout', 'display');
}
}
Run Code Online (Sandbox Code Playgroud)
UsersController:
class UsersController extends AppController {
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add', 'logout', 'login');
}
Run Code Online (Sandbox Code Playgroud)
...
public function login() {
//who cares
}
public function logout() {
$wp_cookie = grab_wp_cookie(); //this grabs …Run Code Online (Sandbox Code Playgroud) 我收到以下错误:
Strict (2048): Non-static method Controller::referer() should not be called statically,
assuming $this from incompatible context [APP/View/Questions/admin_edit.ctp, line 20]
Run Code Online (Sandbox Code Playgroud)
由此引起的:
//in app/View/Questions/admin_edit.ctp
echo $this->Html->link('Cancel', Controller::referer() );
Run Code Online (Sandbox Code Playgroud)
为什么?
在模型测试的编辑页面上,我希望能够更新来自同一表单的所有相关(通过 hasMany)问题的“Questions.order”字段。
我已经准备好了关于 saveMany()/saveAll()的Cake book 章节,我正在使用它,Model.0.field syntax但我不知道如何告诉 CakePHP哪个记录对应于哪个输入。#in应该Model.#.field对应问题的 id 字段吗?这是我目前正在做的事情:
echo $this->Form->create( 'Question', array('action'=>'order'));
$n = 0;
foreach ($questions_array as $question) : ?>
<?php echo $this->Form->input('Question.'.$n.'.order' ); ?>
<?php echo $this->Form->input('Question.'.$n.'.id', array('type'=>'hidden', 'value'=>$question['Question']['id']) ); ?>
<input type="submit" value="Save" />
...
$n++;
endforeach;
$this->Question->Form->end();
Run Code Online (Sandbox Code Playgroud)
表单提交并似乎保存,但更新的order值与正确的问题记录不对应。我究竟做错了什么?
更新:
这是order我的控制器中的操作:
public function admin_order() {
$data = $this->request->data;
$this->Question->saveAll($data['Question']);
$this->Session->setFlash( "Order saved.");
$this->redirect( $this->referer() );
}
Run Code Online (Sandbox Code Playgroud) 我正在研究如何通过我们网站上的HTML页面可靠地查看PDF文件.我发现很多对PDF.js的引用,看起来很酷,但几乎没有文档.开发似乎很活跃,但我不知道它现在是否是生产项目的现实选择.
Github和Mozilla上的语言充满了"实验......"和"测试......"但该项目似乎已经存在了足够长的时间才能有一个稳定的版本.
如果答案是肯定的,那么在任何地方都有文件吗?
编辑:我不知道为什么关闭6个赞成票,一个完全可以回答的问题,并且没有任何"非建设性的辩论".
我正在尝试将文件上传到第三方端点,但我不能直接从我的表单发布文件,因为API需要一个我无法向最终用户公开的api_key.因此,我的计划是将表单指向控制器/操作并从那里发布数据.但是,当我debug($this->request->data)从控制器内部时,文件数据丢失.
视图上的表单:
echo $this->Form->create('Media', array('type'=>"file", 'url'=>array('controller'=>'media', 'action'=>'upload') ) );
echo $this->Form->input('name', array("name"=>"name") );
echo $this->Form->input('file', array('type'=>'file', "name"=>"file") );
echo $this->Form->input('project_id', array('type'=>'hidden', "name"=>"project_id", "value"=>$project["Project"]['hashed_id']) );
//THIS CANNOT BE HERE: echo $this->Form->input('api_password', array('type'=>'hidden', "name"=>"api_password", "value"=>'xxxxxxx') );
echo $this->Form->end("Submit");
Run Code Online (Sandbox Code Playgroud)
这是我debug()从控制器请求数据时看到的内容:
array(
'name' => 'Some Name',
'project_id' => 'dylh360omu',
)
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
正如标题所暗示的那样,在构建响应式网站时,我常常遇到一个问题,即长(ish)URL会破坏我的流畅网格并导致较小设备上的水平滚动.因为它们是一根长串,它们不会包裹并将容器的宽度推到比设备宽度更宽的位置......
<--device-->
______________
| |
| http://longurlthatdoesntfit.com
| |
| |
Run Code Online (Sandbox Code Playgroud)
有时我会制作容器,overflow:hidden但只是在URL的末尾切掉它,它往往会锁定毛病.另一种方法可能是缩小较小设备上的字体大小,但在URL长度不同的情况下,这意味着将其缩小以确保它总是有足够的空间.
肯定有更好的办法.
我的linux服务器正在运行带有Nginx/unicorn的Rails 4应用程序.
我正在使用Whenever gem来安排任务.一切正常,直到几天前cron工作似乎已停止运行.
这是在我的schedule.rb文件中:
every 5.minutes do
runner "Video.send_to_wistia", environment: 'production'
end
Run Code Online (Sandbox Code Playgroud)
这是我跑步时看到的crontab -l:
# Begin Whenever generated tasks for: myapp
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash -l -c 'cd /home/myuser/myapp && bin/rails runner -e production '\''Video.send_to_wistia'\'''
# End Whenever generated tasks for: myapp
Run Code Online (Sandbox Code Playgroud)
我重新启动了独角兽.我也确保运行:
whenever --update-crontab myapp
Run Code Online (Sandbox Code Playgroud)
在我的video.rb文件中,其中包含应该运行的操作,我放置了一些日志代码:
def self.send_to_wistia
logger.debug( "Sending videos to wistia at #{Time.now}" )
...
Run Code Online (Sandbox Code Playgroud)
我一直在看日志,没有任何东西出现在那里.
PS:我的第一直觉是,该网站可能正在开发模式下运行(每当任务未配置为运行时),但似乎并非如此,因为我现在看到记录进入我的生产数据库.
更新:
作为我的应用程序的用户,当我运行时,service cron status我得到这个:cron: unrecognized service.但我不确定这是在检查用户的crontab还是系统范围.
Update2:
这是我跑步时看到的pgrep …
我正在尝试开始使用CakePHP架构: app/Console/cake schema generate
我收到以下错误:
Welcome to CakePHP v2.3.0 Console
---------------------------------------------------------------
App : app
Path: /Applications/MAMP/htdocs/mysite/app/
---------------------------------------------------------------
Cake Schema Shell
---------------------------------------------------------------
Error: Database connection "Mysql" is missing, or could not be created.
Run Code Online (Sandbox Code Playgroud)
这很令人困惑,因为站点运行正常,因此Config/database.php中的DB凭据是正确的.
更新: 因为我正在使用MAMP,所以我在$ defualt数组中的Config/database.php中添加了以下内容:
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
Run Code Online (Sandbox Code Playgroud)
现在我没有得到原始错误,而是一些新错误:
Welcome to CakePHP v2.3.0 Console
---------------------------------------------------------------
App : app
Path: /Applications/MAMP/htdocs/mysite/app/
---------------------------------------------------------------
Cake Schema Shell
---------------------------------------------------------------
Generating Schema...
Notice Error: Schema generation error: invalid column type enum('normal','unlimited_time','admin','extra_time') for Attempt.type does not exist in DBO in [/Applications/MAMP/htdocs/mysite/lib/Cake/Model/CakeSchema.php, line 616]
Notice Error: …Run Code Online (Sandbox Code Playgroud) 我正在处理涉及许多小元素的大型 SVG 粒子动画。有时高达 1000。当我为这么多元素设置动画时,浏览器似乎很挣扎,所以我正在寻找优化代码的方法,以获得更好、更流畅的性能(尤其是 Firefix)。
我的主要问题是,例如,将元素的stroke属性设置为属性或样式之间是否有任何区别:
<circle r="0.15" cx="84" cy="782" stroke-width="6" stroke="transparent" style="fill: #ffffff;"></circle>
Run Code Online (Sandbox Code Playgroud)
对比
<circle r="0.15" cx="84" cy="782" stroke-width="6" stroke="transparent" style="stroke:transparent; stroke-width:6; fill: #ffffff;"></circle>
Run Code Online (Sandbox Code Playgroud)
我正在使用 D3.js 添加一堆这些并让它们四处移动......在 Chrome 变得笨拙之前,1000 似乎是大致的限制。Firefox 更糟糕。
如果您有任何其他性能建议,也欢迎提出。
按要求更新:
这是我创建节点的方式:
var makeNode = function(coeficient, x, y) {
coeficient = coeficient || 1;
return {
radius: (Math.random() * coeficient ).toFixed(2),
cx: function() { return x || Math.round(Math.random()*width) },
cy: function() { return y || Math.round(Math.random()*height) }
}
};
var nodes1 = d3.range(300).map( …Run Code Online (Sandbox Code Playgroud) 让我们想象一下,我有一个简单的javascript网站:
t = setInterval( callback, 30*1000 );
var callback = function() {
document.write('foobar');
};
Run Code Online (Sandbox Code Playgroud)
如果用户从移动设备访问我的网站,我想知道在页面/应用程序在后台后回调是否会继续执行.我知道所有的移动设备都不一样,所以为了清楚起见,我们要确定一些特定的场景:
在这些情况下(如果有的话)用户会在一小时后返回到满屏的foobars?
更新
现在JavaScript继续执行,即使是非活动选项卡(计时器减慢到1s频率),甚至在后台使用Safari.