标签: symfony1

Symfony(PHP框架)和MongoDB(或任何基于json的数据库)

我想知道是否可以在symfony项目中使用基于json的无模式,基于文档的数据库,如Mongodb或Couchdb,就像它用于ruby-on-rails网站一样?如果是的话,怎么办呢?

php json symfony1 mongodb

8
推荐指数
2
解决办法
5100
查看次数

认真加快PHP?

我已经编写PHP多年了,并且已经在阳光下使用了每个框架,但是有一件事总是让我感到烦恼......那就是每当有人告诉我的服务器他们想要的时候,整个血腥的东西都必须被解释和执行页面服务.

我已经尝试过缓存,FastCGI,Zend作业队列(和类似的symfony插件 - 以及我自己的基于数据库的解决方案,实现System_Daemon类来运行后台进程)我已经设法让我的应用程序相当快速地使用所有这些东西......但是我无法克服我的设置文件,系统/环境检查功能以及所有应该只加载ONCE的所有东西的心理块...加载每个人的时间某人点击我的页面.

所以,我的漫步导致以下Q--

是否有一些方法/技术将PHP的某些方面加载到RAM中,以便在请求该页面时,所有我的settings.yml文件,系统检查,框架文件,缓存页面等都可以直接从内存加载而无需触及HD ...或者需要每天进行50,000次相同的加载机制来启动程序?

如果PHP中没有任何内容......是否有其他可以通过这种方式编译的"网络"语言,以允许真正的init-once应用程序?

php compiler-construction symfony1 daemon

8
推荐指数
2
解决办法
787
查看次数

在Doctrine PHP Symfony中重写Doctrine_Record(sfDoctrineRecord)实例方法

我的背景是在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

php doctrine symfony1 extending getter-setter

8
推荐指数
3
解决办法
4630
查看次数

Symfony 1.4中的动态页面标题

我想知道是否有人在Symfony中设置动态元标题有任何好的建议/经验?

目前,我所知道的解决方案是使用以下代码在每个操作中单独设置标题:

$this->getResponse()->setTitle('This is a title');
Run Code Online (Sandbox Code Playgroud)

因为我还需要翻译标题,我可以在动作中调用i18n帮助程序,将它们包含在提取的XLIFF中.不需要特殊的SEO东西,只是一个干净的标题.

但是,上面的确需要我分别调整每一个动作.View.yml不合适,因为我经常每个模块有多个动作/模板.

是否有人知道Symfony有更好的方法,或者这确实是正确/唯一的方法吗?

谢谢.

action symfony1 metadata response title

8
推荐指数
2
解决办法
1万
查看次数

应该在哪里放置"全球"Symfony功能?

放置在多个MVC层中使用的函数的最佳实践是什么?

我最近不得不编写一些在View和Model中使用的统计函数.如果我把它们放在帮助器中,我就会在模型层中加载助手,这很烦人,似乎不正确,并且当从任务调用这些函数时会完全中断(因为没有默认上下文).如果我将它们放在顶级lib目录中,我就会像Stats::normalPercentile在视图中那样进行调用.

还有其他选择吗?Symfony开发者是否有任何关于应该放置这些功能的评论?

编辑:显然在视图中进行静态调用没有问题.我推断这是基于Symfony没有将他们的助手编写为类(即使经过重要的讨论.)在这种情况下,是否有任何约定放置文件的约定?把它们扔进去lib/util

php symfony1

8
推荐指数
1
解决办法
2784
查看次数

ORM是全有还是全无?

如果我使用ORM,请与Zend或Symfony说.这是一个全有或全无的交易?

我想使用ORM,但也希望在某些情况下优化性能并自己编写查询以获得细节.因此,如果我开始使用ORM,一旦将其包含在我的项目中,是否难以以旧的方式进行操作?

php orm symfony1 zend-framework

8
推荐指数
2
解决办法
431
查看次数

如何在symfony中返回特定的状态代码(例如24)

我需要在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)

它没有问题

任何想法为什么?

php symfony1 http http-headers

8
推荐指数
2
解决办法
2万
查看次数

VMWare 6.5 + PHP 5.3.3 + Symfony 1.4中出现奇怪的PHP解析/语法错误

在遵循"实践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:说清楚我已经测试了以下组合以缩小问题范围:

  • VM软件:VMWare Workstation 6.5.5/VirtualBox 4.0.8
  • PHP版本:5.3.3/5.2.6,
  • 挂载类型:vmhgfs(或带有VirtualBox的vboxsf)/ …

php doctrine symfony1 vmware-workstation

8
推荐指数
1
解决办法
1333
查看次数

使用路由在Symfony任务中生成URL

我在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

我怎么解决这个问题?

symfony1 symfony-1.4

7
推荐指数
1
解决办法
1万
查看次数

在Doctrine中将虚拟列添加到当前表?

我正在使用Doctrine 1.2和Symfony 1.4.假设我有一个User模型,它有一个Profile.这些定义为:

用户:

  • ID
  • 用户名
  • 密码
  • created_at
  • 的updated_at

轮廓:

  • ID
  • 用户身份
  • 名字
  • 地址
  • 邮政编码

我通常会得到这样的数据:

$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)

doctrine symfony1 join calculated-columns doctrine-1.2

7
推荐指数
1
解决办法
8896
查看次数