Cuold有人向我解释了Doctrine自动生成的文件<ModelName>.class.php和<ModelName>Table.class.php?例如,在Jobeet教程中有JobeetJob.class.php和JobeetJobTable.class.php.
我不明白每个文件的作用以及我必须为模型类放置方法的位置.
任何人都可以请告诉我如何为我的架构添加一个类型枚举的新列以实现Doctrine Migration?
如何从Aptana Studio 3终端视图连接到远程主机,并使用该服务器上的命令?
我正在使用symfony框架,该项目在我的主机192.168.0.100中,所以我想运行symfony命令,如: $ symfony propel:build-schema
我们将从自制框架切换到Symfony或Yii.从我们的观点来看,这两个框架的能力是相似的(即它们都有我们需要的东西).
我们的情况:php 5.2.9,中型网站(10.000唯一身份/天)但共享主机.
请不要回答"这个更好",最好是最近会使用这两个框架的人.
我有一个动作,它接受sfGuard保护的POST数据.这意味着如果用户未登录,POST数据将被发送到登录表单.通常,这不是问题,用户继续登录,并且必须再次提交数据.
不幸的是,登录表单似乎使用POST数据,就好像它是与表单本身一起提交的.这意味着它抱怨所需的用户名和密码字段丢失,并且它抱怨它缺少CSRF令牌.无论如何,在提交表单后,最后一个问题不会消失,这意味着用户无法登录.
如果没有登录,则不应向用户显示表单,但用户可能可以在表单仍然打开的情况下注销.所以我要求保持界面的防水和无错误.
这是sfGuard的缺点,可以避免,还是我做错了?
澄清一下,路线如下:
add_subgroup:
url: /group/:id/add
class: sfPropelRoute
options:
model: Group
type: object
param: { module: subgroups, action: create }
requirements:
group_id: \d+
sf_method: [post]
Run Code Online (Sandbox Code Playgroud)
用于提交请求的表单如下:
<form action="<?php echo url_for('add_subgroup', $group) ?>" method="post">
<input type="hidden" name="group_id" value="<?php echo $group->getId() ?>" />
<input type="text" name="subgroup_id" />
<input type="submit" class="button" value="Add" />
</form>
Run Code Online (Sandbox Code Playgroud) 我在我的学说mongodb*odm*中对结果文档进行查询.文档中有两个索引字段,我想在排序中使用.我写了类似的东西:
$results = $this->createQueryBuilder('Document\Score')
->sort('finalScore', 'desc')
->sort('date', 'desc')
->getQuery()
->execute();
Run Code Online (Sandbox Code Playgroud)
这里第二个sort()函数会覆盖第一个函数,并且永远不会找到指定的结果.
在此先感谢您的帮助.
我的背景是在Propel中,所以我希望在Doctrine_Record(sfDoctrineRecord)中覆盖一个神奇的getter是一件简单的事情,但是我得到了一个Segfault或者覆盖方法被简单地忽略了,而不是超类.
https://gist.github.com/697008eaf4d7b606286a
class FaqCategory extends BaseFaqCategory
{
public function __toString()
{
return $this->getCategory();
}
// doesn't work
// override getDisplayName to fall back to category name if getDisplayName doesn't exist
public function getDisplayName() {
// also tried parent::getDisplayName() but got segfault(!)
if(isset($this->display_name)) {
$display_name = $this->display_name;
} else {
$display_name = $this->category;
}
return $display_name;
}
}
Run Code Online (Sandbox Code Playgroud)
在Doctrine_Record实例上扩展/覆盖方法的正确Doctrine方法是什么(通过sfDoctrineRecord扩展Doctrine_Record)?这必须是可行的......或者我应该查看模板文档?
谢谢,Brian
放置在多个MVC层中使用的函数的最佳实践是什么?
我最近不得不编写一些在View和Model中使用的统计函数.如果我把它们放在帮助器中,我就会在模型层中加载助手,这很烦人,似乎不正确,并且当从任务调用这些函数时会完全中断(因为没有默认上下文).如果我将它们放在顶级lib目录中,我就会像Stats::normalPercentile在视图中那样进行调用.
还有其他选择吗?Symfony开发者是否有任何关于应该放置这些功能的评论?
编辑:显然在视图中进行静态调用没有问题.我推断这是基于Symfony没有将他们的助手编写为类(即使经过重要的讨论.)在这种情况下,是否有任何约定放置文件的约定?把它们扔进去lib/util?
我需要在symfony中为API返回疯狂的http代码状态
我需要返回状态码24我试着这样做:
$this->getResponse()->setStatusCode('24');
Run Code Online (Sandbox Code Playgroud)
但我总是得到响应代码500
当我尝试返回像404,403这样的"正常"状态代码时:
$this->getResponse()->setStatusCode('403');
Run Code Online (Sandbox Code Playgroud)
它没有问题
任何想法为什么?
在遵循"实践Symfony"课程的同时,我遇到了一个奇怪的错误.
我在VMWare 6.5.5机器上安装了Debian Squeeze.它附带PHP 5.3.3,我使用的是Symfony 1.4.源文件在主机上,我使用共享文件夹功能(vmhgfs mount)访问它们.
现在,当我尝试以下命令时,出现错误:
php symfony doctrine:build --model
php symfony doctrine:build --sql
Run Code Online (Sandbox Code Playgroud)
错误:
PHP Parse error: syntax error, unexpected ')' in /var/www/appli/lib/model/doctrine/base/BaseJobeetJob.class.php on line 144
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我: - 在没有共享文件夹的情况下做同样的事情(例如在ext3分区上),它可以工作, - 将VM转换为VirtualBox并在共享文件夹上执行相同的操作,它可以工作, - 降级PHP到5.2.6(来自lenny),它的工作原理.
我记得前一段时间与Smarty生成的PHP代码有同样的问题.因为它是自动生成的PHP并且可以随意重新生成,所以它是在本地direcorty中生成的.但我不认为这适用于Doctrine生成的文件.
有没有人知道发生了什么以及如何解决它?
编辑:这是第144行的代码:
public function setUp()
{
parent::setUp();
$this->hasOne('JobeetCategory', array(
'local' => 'category_id',
'foreign' => 'id',
'onDelete' => 'CASCADE'));
$timestampable0 = new Doctrine_Template_Timestampable();
$this->actAs($timestampable0);
}
} // Line 144 here.
Run Code Online (Sandbox Code Playgroud)
它实际上是文件的结尾......
编辑#2:说清楚我已经测试了以下组合以缩小问题范围: