【问题标题】:How can I pass a value from view to controller in Zend Framework?如何在 Zend Framework 中将值从视图传递到控制器?
【发布时间】:2011-01-30 17:55:41
【问题描述】:

我知道,如果我把它放在一个链接上,然后我点击了那个链接:

array('controller'=>'challenge','action'=>'evaluateChallenge','codTeam'=>$d["cod_challenge_team"]);

如果我在控制器上这样做:

$values = $this->_request->getParams();
 $teamVo->setCodTeam($values['codTeam']);

我会得到想要的值。

我也想做同样的事情,但是没有用户交互。 我打算将一个值传递给evaluateChallenge,每次我在视图端循环谷值。

这是最愚蠢的问题之一,但它肯定会在这里翻译损失。

我可以请你帮忙吗?

或者至少告诉我我说错了什么。 :)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::

我想显示与给定团队相关的数据库记录元素列表。 这样我就可以拥有:

A队 - 鳕鱼队 - 挑战A - 参与者ABC - 点 XXX

B队 - 鳕鱼队 - 挑战A - 参与者ABC - 点 XXX

等等……

在我看来,对此的代码翻译是这样的:

foreach ($challenge as $d) { 
echo $d['challengeName'];
echo $d['participants'];
echo $d['points'];
}

一切都很好,很清晰。

现在,我需要在此列表中添加其他信息,以便获得类似以下内容:

A队 - 鳕鱼队 - 挑战A - 参与者ABC - 点 XXX - FILESATTACHED_NEW_INFORMATION

B队 - 鳕鱼队 - 挑战A - 参与者ABC - 点 XXX - FILESATTACHED_NEW_INFORMATION

等等……

这个新信息应该在视图助手上计算出来。好的。 我会弄清楚如何做到这一点。

但是,我需要在视图上调用该助手 - 对吗?在 foreach 所在的同一视图上。但是,我将需要 FilesAttached 以某种方式与 foreach ($challenge as $d) 相关联,对吗? - 或者有其他方法吗?

如果没有其他方法: 我们如何将来自帮助程序的数据与通过 foreach 的视图中已经存在的数据联系起来?

再次感谢, 内存

【问题讨论】:

    标签: php model-view-controller zend-framework


    【解决方案1】:

    我也想做同样的事情,但是没有用户交互。我打算将一个值传递给evaluateChallenge,每次我在视图端循环谷值。

    您可以使用Action ViewHelper 来做到这一点,但这会为每次调用它创建一个新的调度循环。这将严重减慢您的应用程序,即why you should avoid itThe helper might also be removed in ZF2.

    更好的方法是使用可以传入所需参数的 ViewHelper。然后,该视图助手将使用传递的参数查询适当的模型并返回您想要的值。只要这不改变模型状态,it is okay to fetch data from the View directly

    RE 更新

    这并没有什么神奇之处:

    foreach ($challenge as $d) { 
        echo $d['challengeName'],
             $d['participants'],
             $d['points'];
    
        $results = $this->evaluateChallenge($d['cod_challenge_team']);
        // now do something with the results
    }
    

    【讨论】:

    • 非常感谢 Gordon,你完全击中了我的疑惑。但是,我还没有看到,如何将该视图与视图上已经存在的循环联系起来。我的意思是,在那个观点上,我有类似的东西:foreach $challenge as $c echo $c['name'], echo $c['points'], etc... 在那个循环中我想添加一些东西。你告诉我应该在助手上创建一些东西,好的。这听起来可能很愚蠢,但是:我如何关联该助手调用,以便助手返回的内容与给定点上的视图循环交互同步。我又迷路了,我可以重做这个..
    • @MEM 对不起,我不明白。您能否用代码示例更新您的问题并解释“与视图循环交互同步”的含义。
    • @Gordon:我一定会更新我的问题。非常感谢您在这里的时间。我正在处理一些事情,但是一旦完成,我会更新我的问题,并通过评论告诉你。很多。 :)
    • @Gordon 我的问题已更新。如果需要更多信息,我当然可以提供。问题很长但相当简单,不幸的是,我不是 php 大师。我在一个非常基础的水平上学习,应该考虑到这一点。 :)
    • @MEM 1) 是的,这是辅助方法。 ZF 参考指南中记录了如何编写自定义助手。 2) 是的,但它的影响仍然比再次调度要小,这意味着完全引导和路由以及到 DB 和其他所有东西的往返。在控制器中获取初始数据时,您是否有机会通过 JOIN 获取额外数据?
    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多