Laravel - 在视图中处理if / else的有效或逻辑设计模式是什么

时间:2013-03-27 07:53:36

标签: php design-patterns laravel

目前我有一个非常大的项目,我需要为不同类型的用户存储不同的数据。

我需要存储模型的正文细节。

我遇到的问题是,女性的身体信息与男性不同,代理商,摄影师不需要身体信息,用户也在群体中

group 3 - Model
group 4 - Agency
group 5 - photographer

在我的观点中,我目前正在这样做

if ($group == 3 && $gender == 2) 
{
    // load female body information (lot of details)
} 
elseif ($group == 3 && $gender == 1) 
{
   // load male body information (lot of details)
} 
else 
{
    // load just work explerience & company info
}

将用户信息存储在3个表中

users         . login information
users_details - users details, like first last name gender ect
users_body    - Body information for models both female / male

那么为什么我要求提供更有效的方法提示,因为我需要在3个不同的页面上显示此类信息,我认为它会变得混乱并导致大量代码重复

如果有人可以给我任何建议的提示会很高兴

谢谢

2 个答案:

答案 0 :(得分:5)

在视图外部处理此逻辑,并将逻辑结果设置为具有适当结果的视图的变量。至于避免“if-tree”,根据具体情况,策略模式可能会有用。

答案 1 :(得分:3)

正如已经说过的那样,你应该在视图之外处理这个问题 单词store data和DB表中的表示应该是使用模型的提示。您可能有父类(可能是抽象的)类ModelBody,您可以在子类MaleFemale中扩展它们。
为了处理不同的用户角色,通常ACL(访问控制级别)是正确的策略 此外,所有这些都应该由控制器进行逻辑处理,您可以从中将所需的和过滤的信息传递给视图。