首先,让我为又一个框架问题道歉.但我认为这与通常的"我应该选择哪种框架?"不同.保证.
这是我的情况:在过去的一年里,我一直在使用自定义框架.它已被用于从小型CMS到大型网站甚至中型社交网络的所有内容.它工作得很好但我现在看到它的局限性.所以,我决定改用第三方框架.更简单的框架(CI,Kohana,Cake)似乎与我所听到的一样缺乏灵活性 - 所以这导致我走向ZF.但是,我也听说ZF可能过于灵活,因而难以使用.更复杂的是,我正在寻找一种通用的解决方案; 我需要一个适用于大型项目的设置.我是主要开发人员,但我需要我的合作伙伴最终能够学习系统并帮助完成不那么复杂的编程任务.
我研究过Doctrine,我喜欢它.因此,我倾向于将Symfony(与Doctrine)作为ZF的主要框架来填补空白.另外,我需要能够将自己的作品添加到此平台,与任何第三方库并行.我希望这将为我提供一个可靠,可扩展的平台,因为我们实际上无法承担每隔几个项目切换框架的费用.
我正在寻找与我现在情况相同的其他人的建议.任何建议将不胜感激.
编辑:我已经在下面发布了我的解决方案,希望能帮助处于同样情况的其他人
任何人都可以告诉我在Symfony 1.4中为表单定制CSRF令牌错误消息的位置/方式.我正在使用sfDoctrineGuard进行登录,特别是在会话用完且你仍然打开页面时,它会抛出一个非常用户不友好的错误:"检测到CSRF攻击".类似"此会话已过期.请返回主页再试一次"听起来更好.
在表单类中执行此操作的正确方法是什么?
谢谢.
我在Ubuntu 9.10上使用Symfony 1.3.2
我想设置textarea小部件的默认值,数据从adb读取.
我在模板中的代码片段看起来像这样:
<?php $form['notes']->render(); ?>
Run Code Online (Sandbox Code Playgroud)
API文档不显示如何执行此操作 - 有谁知道如何执行此操作?
我在Ubuntu 10.0.4 LTS上运行Symfony 1.3.6.
我编写了一个Symfony任务,生成一个包含链接(URL)的报告.
这是execute()我的任务类中方法的片段:
protected function execute($arguments = array(), $options = array())
{
//create a context
sfContext::createInstance($this->configuration);
sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url', 'Asset', 'Tag'));
...
$url = url_for("@foobar?cow=marymoo&id=42");
// Line 1
echo '<a href="'.$url.'">This is a test</a>';
// Line 2
echo link_to('This is a test', $url);
}
Run Code Online (Sandbox Code Playgroud)
路由名称定义如下:
foobar:
url: /some/fancy/path/:cow/:id/hello.html
param: { module: mymodule, action: myaction }
Run Code Online (Sandbox Code Playgroud)
运行此命令时,生成的链接为:
第1行产生此输出:
./symfony/symfony/some/fancy/path/marymoo/42/hello.html
而不是预期的:
/some/fancy/path/marymoo/42/hello.html
第2行生成错误:
无法找到匹配的路由来为params生成url"array('action'=>'symfony','module'=>'.',)".
同样,预期的URL是:
/some/fancy/path/marymoo/42/hello.html
我怎么解决这个问题?
我正在使用Doctrine 1.2和Symfony 1.4.假设我有一个User模型,它有一个Profile.这些定义为:
用户:
轮廓:
我通常会得到这样的数据:
$query = Doctrine_Query::create()
->select('u.id, u.username, p.first_name, p.last_name')
->from('User u')
->leftJoin('Profile p')
->where('u.username = ?', $username);
$result = $query->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
print_r($result);
Run Code Online (Sandbox Code Playgroud)
这将输出如下内容:
Array (
"User" => Array (
"id" => 1,
"username" => "jschmoe"
),
"Profile" => Array (
"first_name" => "Joseph",
"last_name" => "Schmoe"
)
)
Run Code Online (Sandbox Code Playgroud)
但是,我希望用户能够包含"虚拟"列(不确定这是否是正确的术语),以便Profile中的字段实际上看起来像是User的一部分.换句话说,我希望看到的print_r声明看起来更像:
Array (
"User" => Array (
"id" => 1,
"username" => "jschmoe",
"first_name" …Run Code Online (Sandbox Code Playgroud) 经过一整天的辛苦挣扎,没有运气的Symfony 2,我决定问你们一个解决方案.
这里的问题是:我想作使用学说http_basic认证,所以用户会被提示输入用户名/密码被保存在数据库中.
所以,我按照以下步骤操作:
1)使用交互式控制台生成器创建了一个名为User的新实体.
这是它的样子:
2)如文档中所述,我实现了UserInterface并添加了4个缺失的方法.现在实体看起来像这样:
3)我已经尽可能少地修改了security.yml以使其工作,它看起来像这样:
我清除了缓存并试图访问app_dev.php/admin,当然我整天都得到同样的错误:
用户"Symfony\Component\Security\Core\User\User"没有用户提供程序.
500内部服务器错误 - RuntimeException
谁能告诉我问题出在哪里?我已经尝试了这千种不同的方式,奇怪的是它工作了一会儿,但是当我尝试将sha1添加为编码器算法而不是明文,并清除缓存时,我又回到了同样的错误...从那时起我什么也没得到它.这就像是在symfony决定时有一个隐藏的缓存被删除:D
我认为错误也可能出现在实体的4种方法中,但我无法修复它们,因为没有关于它们应该做什么的文档.
我目前正在使用RC4.
在此先感谢,希望有人会帮助.
如何在视图中添加保存和返回列表按钮以创建新记录?一般来说,我想要更多的按钮,所以我正在寻找一个通用的答案.
编辑:默认生成器为我提供了两个按钮:
- 保存
- 保存并添加
我想要一个按钮saves and takes me back to the list.而且我还想要一个带有自定义动作的自定义按钮.
让我解释一下实际情况:
我有一个列表操作create,将我带到一个具有一些输入字段的表单.现在我想使用这些字段的数据制作图像.我想在表单的右侧将此图像显示为预览.为此我需要一个预览按钮,这样无论何时按下,它都会将数据提交给自己进行预览和进一步修改.
我希望现在更清楚了.
我在Symfony中遇到Swift_Mailer问题.我正在发送包含大量"àéè"字符的法语电子邮件.起初,当我尝试发送这些字符时,我的电子邮件客户端很好,但在我的同事的电子邮件客户端,他们没有.
所以我通过utf8_encode函数为邮件添加文本并再次尝试.现在它反过来了.它在我的电子邮件客户端显示得很好,但在我的同事中搞砸了.
在Symfony中使用Swift_Mailer解决这些电子邮件UTF-8问题的最佳方法是什么?
我需要连接到behind of a VPN通过PHP 的Web服务.我的服务器是Debian Linux(Squeeze).
虽然我的问题似乎是一个概念性的问题,但也欢迎任何具体的帮助.
服务器操作系统 :Debian Linux Squeeze(x64)
Web服务器:Apache HTTP
PHP版本:5.3
框架:Symfony 1.4
我总是假设关闭数据库连接始终是一个好习惯,无论数据库/ ORM如何,如mysql_close(),Propel :: close()等.
参考我的其他的一个问题,并在互联网上其他一些研究,我认识了一个令人惊讶的面孔,大多数人建议,如果你的连接紧密连接始终被请求后关闭并不重要.
但是我发现这些答案很难消化.原因是,为什么所有DB lib,ORM都提供close方法?如果它存在,在每个ORM/lib中,必须有一些很好的使用它.
有人可以说明在什么情况下,我们应该用close方法关闭数据库连接?如果这些方法根本没用,为什么它们存在于所有db libs/ORM中?
编辑
我的结论
这是Bondye和Fluffeh之间的一次很好的讨论,它清除了我对使用连接关闭的疑虑.感谢他们两个.
我真的很难接受一个答案,因为答案都是正确的.只需接受所有评论的回答,以便保持最佳状态.但+1正确答案.
symfony1 ×10
php ×6
doctrine ×3
forms ×2
symfony-1.4 ×2
csrf ×1
debian ×1
doctrine-1.2 ×1
frameworks ×1
html ×1
join ×1
linux ×1
propel ×1
sfguard ×1
swiftmailer ×1
textarea ×1
vpn ×1