我在zend框架2中工作,我正在为所有路由使用段类型,但我注意到在zend骨架应用程序中使用了文字路由类型.这些是什么?
我有一个组件说,List Component.List组件可以通过组件ListItem呈现项目.这可以通过下面的内容轻松实现
import React from 'react';
import ListItem from '../list-item/list-item';
class List extends React.Component {
renderListItems() {
return this.props.items.map(item => <ListItem item={item} />)
}
render(){
return (
<div className="list">{this.renderListItems()}</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
和
import React from 'react';
class ListItem extends React.Component {
render(){
return (
<div className="list-item">Name: {this.props.item.name}</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在这种情况下,如果列表项可以在其中包含父子项,即一个列表项可以进一步呈现更多列表项,如何从其自身内呈现ListItem组件.以下是我正在寻找的渲染树以及我的数据状态
List
- ListItem
- ListItem
- ListItem
- ListItem
- ListItem
Run Code Online (Sandbox Code Playgroud)
编辑
我认为正确的结构将是这样的
List
- ListItem
- List
- ListItem
- ListItem
- ListItem
- ListItem
Run Code Online (Sandbox Code Playgroud)
但它会在List和ListItem组件之间创建一个循环依赖,这会是一个问题吗?
在我的zend框架2项目中,我更喜欢双层模型(mapper和model)而不是学说,并试图使它们像doctrine一样工作,所以我可以从模型(实体)访问关系数据.以下示例演示了我想要实现的目标.
class User
{
protected $userTable;
public $id;
public $name;
public function __construct($userTable)
{
$this->userTable = $userTable
}
public function getUserArticles()
{
return $this->userTable->getUserArticles($this->id);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我不能在我的用户模型中注入我的用户表,因为表网关使用模型类作为数组对象原型,后来被注入以创建用户表网关(映射器).
我不想在我的模型中注入服务管理器,因为它被认为是一种不好的做法.如何在用户模型中注入用户表?可能吗?什么是实现我想要做的最好的方法