我在CakePHP 2中测试一个模型并且模拟了这样的模型:
$this->User = $this->getMock('User', array(
'_saveUploadedFile',
'_removeUploadedFile',
));
$this->User->expects($this->any())
->method('_saveUploadedFile')
->with($data, Configure::read('App.myDirectory'), true);
->will($this->returnValue(true));
$this->User->expects($this->any())
->method('_removeUploadedFile')
->with($data, Configure::read('App.myDirectory'))
->will($this->returnValue(true));
Run Code Online (Sandbox Code Playgroud)
由于使用数据库的任何操作都会引发以下错误:
"Database table mock__user_b6241a4cs for model User was not found."
Run Code Online (Sandbox Code Playgroud)
我重新定义了模型信息:
$this->User->alias = 'User';
$this->User->useTable = 'users';
Run Code Online (Sandbox Code Playgroud)
现在测试运行良好,但它使用的是$default数据库,database.php而不是$test.可能发生什么?
使用模拟对象时,为什么测试的数据库配置会发生变化?是否与数据库权限相关,导致模拟对象无法创建自定义表?
谢谢!
如果您尝试nil在Ruby中调用对象上的方法,则会NoMethodError出现以下消息的异常:
"undefined method ‘...’ for nil:NilClass"
Run Code Online (Sandbox Code Playgroud)
但是,try在Rails中有一个方法,nil如果它被发送到一个nil对象,它就会返回:
require 'rubygems'
require 'active_support/all'
nil.try(:nonexisting_method) # no NoMethodError exception anymore
Run Code Online (Sandbox Code Playgroud)
那么try内部如何工作以防止该异常?
默认情况下,CakePHP有一个AppModel类,应用程序的每个模型都继承自它.在模型之间共享逻辑的常见设计模式是创建行为并$actAs为该行为配置模型.
但是,如果我想引入这样的模型类层次结构呢?:
AppModel
|__ Vehicle
|__ Car
|__ Bike
|__ Helicopter
Run Code Online (Sandbox Code Playgroud)
我试图创建一个Vehicle继承自的类,AppModel然后每个子类都继承自Vehicle.但CakePHP告诉我它无法找到这个类Vehicle.
我怎么能创建这个以及CakePHP目录树中应该创建的位置Vehicle?
谢谢!
如何获取当前的型号名称AppModel?
我有这个代码来验证密码和确认密码.但我想把它放进去AppModelp:
function isSameAs($check, $field) {
if( $check === $this->data['User'][$field] ) {
return true;
}
else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用CakePHP 2.
我有三个UIButton物体在视觉上堆叠在一起.当用户点击按钮时,下面的按钮应向下移动一定距离.我正在使用以下动画块:
// Assuming button 1 was clicked...
[UIView animateWithDuration:0.25f
delay:0.0f
options:UIViewAnimationOptionCurveLinear
animations:^(void) {
self.button2.frame = CGRectOffset(self.button2.frame, 0.0f, 20.0f);
self.button3.frame = CGRectOffset(self.button3.frame, 0.0f, 20.0f);
}
completion:^(BOOL finished) { NSLog(@"Finished"); }];
Run Code Online (Sandbox Code Playgroud)
如果我增加动画持续时间,例如从0.25增加到0.75,则按钮不会保持在一起但它们开始以不同的时间间隔移动.我已经尝试过使用Core Animation方法,通过对动画和其他内容进行分组,但还没有找到任何解决方案.
你有什么想法?现在我保持持续时间,0.25直到我想出一些东西.
我想在swift中编写一个协议
@objc protocol RestAPIManagerDelegate {
optional func credentialValidated(isValid: Bool?)
}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
'Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C'
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
假设我有一个Ecosystem用我的symfony自动生成的模型schema.yml.在代码中的某个时刻,我想从表中检索记录.
我知道有一些方法可以用Doctrine/Propel类来做到这一点,但是,有没有办法直接用模型做到这一点?我一直在考虑这样的事情:
$ecosystem = new Ecosystem();
$records = $ecosystem->find(...);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这是做这种事情的首选方法吗?
我一直在使用CakePHP进行开发,直接使用Doctrine进行查询对我来说并不自然.如果我明天决定改为Propel怎么办?
谢谢!
我在CakePHP中有一个表单,它有两个实时搜索文本输入.当用户选择结果时,它们中的每一个都更新隐藏字段的值.调用模型Record,涉及的属性是
budget_idprogram_idconcept_id我以这种方式使用FormHelper创建了一个表单:
...
<?php echo $this->Form->create('Record') ?>
<h1>Create a record</h1>
<?php echo $this->Form->hidden('Record.budget_id', array('value' => $budget['Budget']['id'])) ?>
<?php echo $this->Form->hidden('Record.program_id') ?>
<?php echo $this->Form->input('Record.program_id_search', array(...)) ?>
<?php echo $this->Form->hidden('Record.concept_id') ?>
<?php echo $this->Form->input('Record.concept_id_search', array(...)) ?>
<?php echo $this->Form->submit('Send') ?>
<?php echo $this->Form->end(); ?>
...
Run Code Online (Sandbox Code Playgroud)
如您所见,隐藏了存储模型属性的输入字段.实时搜索框配置了jQuery的自动完成插件.
按照CakePHP手册的建议,我已经在beforeFilter方法中禁用了两个额外的字段,以便安全组件忽略它们并且表单通过验证:
public function beforeFilter() {
$this->Security->disabledFields = array(
'Record.program_id_search',
'Record.concept_id_search',
);
}
Run Code Online (Sandbox Code Playgroud)
每当我从Javascript更改隐藏输入的值时,CakePHP似乎都会生气,它会将我发送到blackhole方法.根据文档,这没关系.
但令我惊讶的是,安全组件一直忽略我的disabledFields设置.
我一直在搜索几个网络资源,每个人都指向disabledFields选项.但它对我不起作用.
有什么建议?
谢谢!!
UPDATE
我找到了一个解决方法,但它真的很难看.我已使用常规选择字段替换隐藏的输入字段,但将CSS显示属性设置为none …
在C++中,有一种!!适用于非bool值的结构,可将其转换为bool.例如:
int n = 12;
if ( !!n )
std::<<cout << "n is true";
else
std::<<cout << "n is false";
Run Code Online (Sandbox Code Playgroud)
是否有可以应用的限制,或适用的类型:POD,指针等?
我在网上看到,当我创建一个对象时alloc,init我必须释放它(甚至一个NSString),所以:
为什么我这样创建NSString:
NSString *prova = [[NSString alloc] init];
[prova release];
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
'release'不可用:在自动参考计数模式下不可用
和
ARC禁止"发布"的显式消息发送
在[prova release]消息上?我尝试这样做时没有错误:
NSString *prova = [[NSString alloc] init];
NSLog(@"Contenuto 0 di prova: %@", prova);
prova = @"prima prova stringa";
NSLog(@"Contenuto 1 di prova: %@", prova);
prova = @"ma cosè questo fantomatico errore";
NSLog(@"Contenuto 2 di prova: %@", prova);
Run Code Online (Sandbox Code Playgroud) cakephp ×4
model ×3
php ×3
animation ×1
autocomplete ×1
c++ ×1
components ×1
doctrine ×1
if-statement ×1
inheritance ×1
ios ×1
ios5 ×1
iphone ×1
jquery ×1
mocking ×1
phpunit ×1
ruby ×1
security ×1
swift ×1
symfony1 ×1
uiview ×1
unit-testing ×1
xcode4.2 ×1