标签: view-helpers

Zend Framework Url View Helper默认添加"id"

我正在创建一个简单的CRUD来添加类别的链接.每个类别都有一个id.我有一个视图,列出了某个类别的所有链接.在该视图中,我有一个添加表单的链接,它是:

http://example.com/link/add/categoryId/3
Run Code Online (Sandbox Code Playgroud)

我目前使用以下语法在视图中构建该链接.

<?php echo $this->baseUrl();?>/link/add/categoryId/<?php echo $this->category['id']; ?>
Run Code Online (Sandbox Code Playgroud)

认为使用Url View Helper可以更清洁.

<?php echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id'])); ?>
Run Code Online (Sandbox Code Playgroud)

但这给了我以下网址

http://example.com/link/add/id/3/categoryId/3
Run Code Online (Sandbox Code Playgroud)

..还有一个额外的"id/3".我阅读但没有完全理解Url View Helper的代码.怎么会有额外的id/3在那里?

谢谢!

@Fge给出了正确的答案,下面是我更新的完整语法.

echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id']),null,true);
Run Code Online (Sandbox Code Playgroud)

url zend-framework view-helpers

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

如何在Rails"content_tag"属性中使用HTML实体?

我有一个Rails 3帮助器,它需要生成可能在属性值中包含HTML实体的元素.例如:

content_tag(:input, nil, :type => 'button', :value => 'Redo &#x21bb;')
Run Code Online (Sandbox Code Playgroud)

我最终得到了这个:<input type="button" value="Redo &#x21bb;" />
但我想要的是:<input type="button" value="Redo ?" />.

如何告诉Rails不要在我的内容标记属性中转义HTML实体?

ruby-on-rails view-helpers ruby-on-rails-3

6
推荐指数
1
解决办法
4353
查看次数

Rabl.render:如何使用视图助手方法?

我正在使用Rabl在rake任务中生成XML输出:

xml = Rabl.render @listings, 'feeds/listings', :format => :xml
# do stuff with xml
Run Code Online (Sandbox Code Playgroud)

但是,我需要在引用的rabl视图文件中使用多个辅助方法,并且NoMethodError我会从这个问题的答案中得到一个正如我所期望的那样.

我尝试使用extends,并include在使用的rake任务,但该类我仍然得到的helper方法同样的错误:

require "#{Rails.root}/app/helpers/feeds_helper.rb"

class SerializeData
  extends FeedsHelper

  def perform
    xml = Rabl.render @listings, 'feeds/listings', :format => :xml
    # do stuff with xml
  end
end
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法在这种方式生成的rabl视图文件中使用辅助方法?(或者至少在某种程度上我仍然可以将它们作为rake任务中的字符串渲染?)帮助器方法被用于许多次,以便按照固定的要求正确地格式化各种数据,因此很难完全删除它们.

xml ruby-on-rails view-helpers ruby-on-rails-3.2 rabl

6
推荐指数
1
解决办法
2420
查看次数

Zend框架2:视图助手中的服务定位器

我正在尝试访问视图助手中的服务定位器,以便我可以访问我的配置.我正在使用此视图助手进行递归功能,因此我不知道在哪里声明服务定位器.

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;
use CatMgt\Model\CategoryTable as RecursiveTable;

class CategoryRecursiveViewHelper extends AbstractHelper
{
    protected $table;

    public function __construct(RecursiveTable $rec)
    {
        $this->table = $rec; 
    }

    public function __invoke($project_id, $id, $user_themes_forbidden, $level, $d, $role_level)
    {

       $config = $serviceLocator->getServiceLocator()->get('config');

       //So i can access $config['templates']

       $this->__invoke($val->project_id, $id, $user_themes_forbidden, $level, $d, $role_level);

    }

}
Run Code Online (Sandbox Code Playgroud)

我试过解决方案给这里链接

但它没有帮助,这样做是否可行?

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;
use CatMgt\Model\CategoryTable as RecursiveTable;
use Zend\View\HelperPluginManager as ServiceManager;

class CategoryRecursiveViewHelper extends AbstractHelper
{
    protected $table;
    protected $serviceManager;

    public function __construct(RecursiveTable $rec, ServiceManager $serviceManager) …
Run Code Online (Sandbox Code Playgroud)

php view-helpers service-locator zend-framework2

6
推荐指数
1
解决办法
5053
查看次数

Zend Framework - 从模块加载View Helpers

我正在Zend Framework中组建一个模块化应用程序,并且正在努力使模块特定的View Helpers加载.

我的目录结构是这样的......

application
---configs  
---controllers  
---forms  
---layouts  
---models  
---modules  
------user  
---------controllers  
---------forms  
---------modules  
---------views  
------------filters
------------helpers  
---------------currentUser.php  
------------scripts  
---------Bootstrap.php  
---views  
---Bootstrap.php  
Run Code Online (Sandbox Code Playgroud)

基本上我想访问currentUser.php中包含的视图助手,但是当我放入时

<?php echo $this->currentUser(); ?>  
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,指出无法找到该文件.

我需要添加到配置文件中以加载这些帮助程序?

我的配置是这样的......

Autoloadernamespaces[] = "Zend_"
Autoloadernamespaces[] = "Default_"
Autoloadernamespaces[] = "User_"

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

includePaths.library = APPLICATION_PATH "/../library"

bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

resources.frontController.controllerDirectory = APPLICATION_PATH    "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

resources.view[] =
resources.modules[] = 
Run Code Online (Sandbox Code Playgroud)

configuration zend-framework view-helpers

5
推荐指数
1
解决办法
3387
查看次数

命名空间中所有视图的帮助器

有没有一种方法可以创建视图助手文件,该文件将可用于命名空间中的所有视图?类似于application_helper.rb,但仅适用于给定的名称空间。

具体来说,我有一个名为“ office”的命名空间。我想设置一个视图助手,“办公室”名称空间中的任何视图都可以访问它。

谢谢。

view-helpers ruby-on-rails-3

5
推荐指数
1
解决办法
736
查看次数

剃刀助手的自定义基页

我有一个项目,我有几个自定义属性和静态方法可用于Razor视图的基础WebPage类...即,我有......

  <system.web.webPages.razor>
    <pages pageBaseType="myNamespace.WebView">
    </pages>
  </system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)

在我的web.config中.这很棒.但是,在我的帮助文件中,它使用现有的基类...

在这种情况下,如果我想访问其中一些方法/属性/ etc ...我必须调用该CurrentPage对象,将其强制转换为我的自定义基类对象,然后获取我想要的方法.为了使助手中的标记更简单,更清晰,我想只定义一些静态属性来获取相关数据......

我已经很好地完成了一个@functions{}块内的一些静态方法和属性,但我想覆盖暴露CurrentPage属性的基类,所以我默认在所有的帮助文件中都可以使用它,我赢了我必须重复代码......

看起来HelperPage实现了WebPageRenderingBase......

查看用于RazorPagesSection配置的MSDN文档,看起来没有其他地方可以修改它...

是否有一个类似的configSection,我可以定义,以覆盖HelperPage基本类型??? 这将是非常有帮助的.谢谢.

c# asp.net view-helpers razor

5
推荐指数
0
解决办法
445
查看次数

如何在zendframework2中使用partial

在ZF1中,我们在layout.phtml文件中使用partial

$this->partial('header.phtml', array('vr' => 'zf2'));
Run Code Online (Sandbox Code Playgroud)

我们如何在ZF2中做同样的事情?

php partials view-helpers zend-framework2

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

如何使用ASP.NET MVC视图预编译与App_Code助手?

我试图启用视图编译,以加快我的ASP.NET MVC3网站加载.我的网站托管在AppHarbor上.

但是,我的视图使用了App_Code文件夹中定义的MVC3视图助手.

当我尝试加载我的网站时,我得到:"目录'/ App_Code /'是不允许的,因为应用程序是预编译的."

如何停止将App_Code文件夹部署到Web服务器,但是仍然预编译了App_Code帮助程序?

我已经尝试将帮助程序更改为Content = None,但这会导致AppHarbor构建错误,因为在预编译期间无法找到帮助程序文件.

view-helpers precompile asp.net-mvc-3 appharbor

5
推荐指数
1
解决办法
1302
查看次数

当前上下文错误中不存在名称"Url"

我有一个MVC4项目,我正在尝试创建一个帮助器.我添加了一个名为"App_Code"的文件夹,在该文件夹中我添加了一个名为MyHelpers.cshtml的文件.以下是该文件的全部内容:

@helper MakeButton(string linkText, string actionName, string controllerName, string iconName, string classes) {
    <a href='@Url.Action(linkText,actionName,controllerName)' class="btn @classes">Primary link</a>
}
Run Code Online (Sandbox Code Playgroud)

(我知道有一些未使用的参数,我会在我修复之后再找到它们)

我"清理"并构建解决方案,没有错误.

在使用帮助程序的页面中,我添加了此代码.

@MyHelpers.MakeButton("Back","CreateOffer","Merchant","","btn-primary")
Run Code Online (Sandbox Code Playgroud)

当我尝试运行该项目时,我收到以下错误:

编译器错误消息:CS0103:当前上下文中不存在名称"Url"

我似乎找不到写这个的正确方法 - 我做错了什么?与我在网上看到的例子相比,它似乎是正确的吗?

asp.net-mvc view-helpers asp.net-mvc-4

5
推荐指数
1
解决办法
6755
查看次数