Php 转发另一个模板
我在Symfony(v2.3)的Php 转发另一个模板,php,templates,symfony,Php,Templates,Symfony,我在Symfony(v2.3)的forward方法中遇到了一个问题 基本上,我在两个不同的包中有两个控制器。比如说,对于桌面版本的应用程序,使用DesktopBundle;对于移动版本,使用MobileBundle 我想将DesktopBundle操作的代码重用为MobileBundle操作。我现在做的是一个前锋: 桌面控制器 namespace Acme\DesktopBundle\Controller; 使用Sensio\Bundle\FrameworkExtraBundle\Configu
forward
方法中遇到了一个问题
基本上,我在两个不同的包中有两个控制器。比如说,对于桌面版本的应用程序,使用DesktopBundle
;对于移动版本,使用MobileBundle
我想将DesktopBundle
操作的代码重用为MobileBundle
操作。我现在做的是一个前锋:
桌面控制器
namespace Acme\DesktopBundle\Controller;
使用Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
使用Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
*@Route(“/”)
*/
类IndexController扩展控制器
{
/**
*@Route(“,name=“desktopIndex”)
*@Template()
*/
公共函数索引()
{
/*有些代码我不想重复*/
返回数组(
'some'=>'var'
);
}
}
MobileController
namespace Acme\MobileBundle\Controller;
使用Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
使用Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
*@Route(“/”)
*/
类IndexController扩展控制器
{
/**
*@Route(“,name=“mobileIndex”)
*@Template()
*/
公共函数索引()
{
返回$this->forward('AcmeDesktopBundle:Index:Index');
}
}
现在它可以工作了,但是很明显,响应
对象与桌面版的索引
的呈现模板一起返回
我想要的是,获取变量,然后呈现移动版本的模板
我尝试将一个变量传递到forward方法,然后有条件地将操作呈现到桌面版本:
返回$this->转发(
“acmeDesktopBundle:Index:Index”,
数组('mobile'=>true)
);
这是可行的,但我不想在
DesktopBundle
中更改代码,只想在MobileBundle
中更改代码。有没有办法做到这一点?我遗漏了什么,还是应该采用完全不同的解决方案 转发意味着重定向到给定页面,但不更改客户端上的url。即在服务器端重定向。如果只想访问操作的返回值,只需调用它。有了@模板
注释,这变得非常简单
namespace Acme\MobileBundle\Controller;
use Acme\DesktopBundle\Controller\IndexController as DesktopController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* @Route("/")
*/
class IndexController extends Controller
{
/**
* @Route("", name="mobileIndex")
* @Template()
*/
public function indexAction()
{
$desktop = new DesktopController();
$desktop->setContainer($this->container);
$values = $desktop->indexAction();
// do something with it
return $values;
}
}
是的,我尝试了这个,但我抛出了一个错误:
FatalErrorException:error:调用/var/www/vendor/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Controller/Controller.php第251行中非对象的成员函数get()