【问题标题】:How can I access Cloudinary's helper method in Symfony2 Controller?如何在 Symfony2 控制器中访问 Cloudinary 的辅助方法?
【发布时间】:2013-12-15 14:08:41
【问题描述】:

我正在使用 Cloudinary 在我的 Sf2 应用程序中管理直接图像上传。

有一个名为“cl_image_upload_tag”的 Cloudinary 辅助函数可以生成上传表单。

我需要在我的控制器中运行该函数并将结果显示为我的模板中的原始代码。但我无法访问控制器中的功能

$cloud_form = \Cloudinary\Uploader::cl_image_upload_tag('image_id', array("callback" => $this->get("router")->generate("cloudinary_callback")));

(我将在 Twig 中将 $cloud_form 输出为 {{ cloud_form|raw }})

我认为这是一个命名空间问题,但我无法让它工作,它得到“错误:调用未定义的方法”。谢谢!

更新:这是自动加载文件:

<?php

use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;

/**
 * @var $loader ClassLoader
 */
$loader = require __DIR__.'/../vendor/autoload.php';

AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

return $loader;

【问题讨论】:

  • 实际错误是什么?你能把它包括在你的问题中吗?
  • 抱歉刚刚更新,错误是“Error: Call to undefined method”
  • 你运行的是什么版本的 symfony?
  • 运行 2.3。该函数位于此类 github.com/cloudinary/cloudinary_php/blob/master/src/… 中,我正在使用 composer 来安装整个东西。
  • 您能粘贴app/autoloader.php 文件吗?

标签: symfony cloudinary


【解决方案1】:

cl_image_upload_tag 不是 Uploader 类的方法,它只是一个在 Uploader.php 中定义的函数,它与保存 Uploader 类的文件相同。

假设您在控制器顶部包含 Uploader.php,您可以直接调用该函数:

$cloud_form = \cl_image_upload_tag('image_id', array("callback" => $this->get("router")->generate("cloudinary_callback")));

如果您使用 composer 来供应 Cloudinary 包,Composer 可能会负责将这些功能添加到您的应用程序中,而无需将文件包含在您的控制器中。

【讨论】:

  • 您好,谢谢,不幸的是,这不起作用。我不能只是硬编码将文件包含在 Symfony2 中,应该通过命名空间来处理,对吗?我有“使用 \Cloudinary\Uploader;”在我的控制器顶部。
  • 如果您检查 Uploader.php 文件,您会发现这些函数不属于 Caninary\Uploader 命名空间。使用它们需要包含文件,此时它们应该是您的根命名空间的一部分。
  • 感谢您帮助我解决这个问题...包含供应商库文件的最 Symfony 方式是什么?我的本地机器和远程服务器上的路径不同......我觉得我们做错了。谢谢!
  • 你可以用composer来做,虽然我不知道你是怎么从供应商的图书馆里做的。看起来像是供应商应该在他们的 composer.json 中做的事情。
【解决方案2】:

尝试如下修改你的app/autoloader.php文件

$loader->registerNamespaces(array(
    'Cloudinary' => __DIR__.'/../vendor/path/to/Cloudinary/source/file',
));

从现在开始,您应该可以将您的班级称为Cloudinary

use Cloudinary; // example
use Cloudinary\Uploader; //other example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 2011-02-05
    • 1970-01-01
    • 2011-08-03
    • 2021-05-20
    • 2015-03-31
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多