我还没有找到一种方法来自定义"列表"视图中显示的项目.更具体一点:默认情况下,选择并显示数据库表中的所有记录,我希望能够稍微调整一下数据库选择,以便仅从表中选择项目的子集.
我怎么能做点什么:
public function executeSearch(sfWebRequest $request)
{
$test = 1;
$this->shows = Doctrine_Core::getTable('Show')
->createQuery('a')
->where('a.name = ?', 'Tom')
if ($test == 1) { ->andWhere('a.last_name = ?', 'Jerry') }
->execute();
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.如何在Doctrine查询中指示?
要么:
public function executeSearch(sfWebRequest $request)
{
if(isset($test)){
$test = 'Jerry';
}
//now if isset $test then andWhere search only with Jerry, if not isset andWhere search ALL
$this->shows = Doctrine_Core::getTable('Show')
->createQuery('a')
->where('a.name = ?', 'Tom')
->andWhere('a.last_name = ?', $test) }
->execute();
}
Run Code Online (Sandbox Code Playgroud) 我有2个实体:与Child有一对多关系的Parent.
我使用$parent->getChilds()Propel自动生成的方法来获取所有的孩子.
然后我用不同的方法手动添加(或删除)一些新的孩子:
$child = new Child();
$child->setParentId($parent->getId());
$child->save();
Run Code Online (Sandbox Code Playgroud)
现在,如果我回想一下这个getChilds方法,我会得到相同的原始子项(并且对数据库也没有额外的查询).
我知道这是更好的行为,更有效率,但有没有办法强制重新获取?
谢谢.
我和Symfony一起玩,遇到过路障.
我创建了一个模型"CmsPage",它有一个名为"content"的字段,存储为clob(这是我所相信的特定的学说).当我创建应用程序时,我设置"--escaping-strategy = on",所以如果我在编辑使用html实体编码的CmsPage时输入任何html,或者沿着这些行编写某些内容.我想在这个领域允许HTML,快速的谷歌搜索没有多大帮助.也许我正在寻找错误的条款.
任何我想禁用该字段的字符转义,并且可能只允许少量html标记.在Symfony中执行此操作的正确方法是什么?
我想知道是否有人知道是否可以在Symfony 1.4 + Doctrine 1.2中为一个路由规则分配多个静态URL.
我所追求的是......
my_routing_rule:
url: {/first-url/, /second-url/, /third-url/}
param: {module: mymodule, action: myaction}
Run Code Online (Sandbox Code Playgroud)
URL是静态的,:something在这种情况下我不能使用变量.
我正在symfony项目中创建移动版本,我正在使用此处描述的技术:http://symfony.com/blog/how-to-create-an-optimized-version-of-your-website-for-the -iPhone合的symfony-1-1
到目前为止它是有效的,但我有一个问题:我的大多数标准页面完全有效,用手机浏览,但symfony强迫我创建*Success.mobile.php模板...我希望symfony使用普通模板,如果它找不到.mobile.php.那可能吗?你会如何解决它?
我是Symfony 1.4的新手
我有一个插件,在modules文件夹里面我有payment模块,为此,我有lib文件夹和templates文件夹.在lib中我有BasePaymentComponents.class.php类,在这个类中我有一些用executeSometing这种方式调用前缀的函数:
public function executeSometing(sfWebRequest $request)
Run Code Online (Sandbox Code Playgroud)
对于每个执行,我在模板文件夹中有一个特定的模板.文件结构如下:_something1.php,_something2.php...
我的问题是在什么时候 实际执行了executeSometing函数BasePaymentComponents.class.php?
我创建了另一个模板,命名_something3.php并为他设置了函数:
public function executeSometing3(sfWebRequest $request)
Run Code Online (Sandbox Code Playgroud)
实际上并没有启动该功能.为什么?
我已经启用了sfDoctrineGuardPlugin,所以我将myUser类更改为我的类扩展sfGuardSecurityUser.
我已经覆盖了sfGuardUser架构以添加我自己的关系
Personnage:
local: id
foreign: user_id
type: one
onUpdate: CASCADE
onDelete: CASCADE
Run Code Online (Sandbox Code Playgroud)
生成模型时,如果继续使用BasesfGuardUser.class.php,我可以在PHPDoc注释中看到我的关系已创建,并且已添加属性Personnage.
* @property Personnage $Personnage
Run Code Online (Sandbox Code Playgroud)
但我不明白,当我尝试访问此属性时,我不能.
在控制器中:
$user = $this->getUser();
$user->Personnage;
Run Code Online (Sandbox Code Playgroud)
在视图中:
echo $sf_user->Personnage
Run Code Online (Sandbox Code Playgroud)
而错误:
Notice: Undefined property: myUser::$Personnage
Run Code Online (Sandbox Code Playgroud)
我怎样才能访问这个属性?
在生成基于学说的表格时:
php symfony doctrine:build-form
Run Code Online (Sandbox Code Playgroud)
Symfony会覆盖我之前生成和编辑的表单,这是错误的!:)
有人知道如何生成单一表格吗?它应该是像这样的东西:
php symfony doctrine:build-form MODEL_NAME
Run Code Online (Sandbox Code Playgroud) 我想在doctrine中进行这个sql查询:
SELECT *
FROM (
(SELECT *, e1.stop_date as sort_date FROM `event` e1 WHERE ...)
UNION
(SELECT *, e2.start_date as sort_date FROM `event` e2 WHERE ...)
) e3
ORDER BY e3.sort_date
Run Code Online (Sandbox Code Playgroud)
我想将symfony模型的结果连接到事件表,比如使用:
Doctrine_Core::getTable('Event')->createQuery('e')
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?