流体:直接访问视图助手返回的数组值

时间:2015-11-13 10:22:04

标签: typo3 fluid

我有自定义流体ViewHelper返回一个数组,我想直接在一个命令中访问这个数组的值。

目前我正在使用两个命令:

{vendor:helper() -> v:variable.set(name: 'data')}
Value of foo: {data.foo}

有没有办法在一个命令中执行此操作? v:variable.get似乎不适合这项任务。

4 个答案:

答案 0 :(得分:0)

这还取决于你真正想要达到的目标。如果你想要对数组进行cicle,你应该创建一个不同的viewhelper 如果你想创建数组,然后访问不同位置的所有数据,你需要寻找f:alias fluid helper

在最后一种情况下,您可以在帮助程序调用后立即直接访问属性,而不再需要它,您必须使用可选值更改viewhelper。如果帮助器重新接收该值,则返回该元素,否则返回整个数组

答案 1 :(得分:0)

VHS viewhelpers的{p> v:variable.get完全符合您的要求:

{v:variable.get(name: 'data.{foo}')}

这将从数组数据中返回索引为{foo}的项目。

答案 2 :(得分:0)

正如@Jpsy所说,有VHS Variable / GetViewHelper

但用法应为 {v:variable.get(name: '{vendor:helper()}.foo')}

如果您需要在模板中多次返回viewhelper的返回数组,最好以您现有的方式使用它。因为否则你会在每次想要再次访问已经建立的数组的索引时调用viewhelper后面的PHP方法来构建和返回数组。

答案 3 :(得分:0)

您写道,您正在使用自定义ViewHelper。 你能修改一下吗?

在ViewHelper中,您可以轻松地为变量分配:

import UIKit import PromiseKit import Alamofire import SwiftyJSON class ViewController: UIViewController { let URL = "http://httpbin.org/" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func runPutRequest() { let putRequest = Alamofire.request("\(URL)/get") putRequest.response { [weak self] putRequest, putResponse, putData, putError in if let strongSelf = self { // Probably store some data strongSelf.runGetRequest() } } } func runGetRequest() { let getRequest = Alamofire.request("\(URL)/get", method: .get) getRequest.response { [weak self] getRequest, getResponse, getData, getError in if let strongSelf = self { // Probably store more data strongSelf.processResponse() } } } func processResponse() { // Process that data } func reloadData() { // Reload that data } }