2017-07-03 71 views
0

这是一个更普遍的问题,我希望有人指出我应该去的方向。Laravel创建函数用于不同的控制器/在同一个控制器中

1)相同控制器的功能:我有两种方法:Store和Update在同一个控制器中。他们都应该包含一些复杂的请求验证(我不能通过验证器或表单请求验证来完成,因为它太复杂了)。这意味着我现在使用相同的代码两次两种方法...我怎么能采取这种代码,创建一个功能,在这两个存储和更新方法只是一个单一的线路上使用它,比如:

do_this_function($data); 

2)功能的差异。控制器:我有许多不同的控制器使用另一个代码。它将俄文字母音译成拉丁字母('Сергей'='谢尔盖'等)。我应该如何以及在哪里注册此功能以便能够在不同的控制器中使用它?

transliterate_this($data); 

我读过一些关于帮手的内容。我应该使用它们吗?如果你是一位经验丰富的Laravel,并且会这样说,我会阅读关于它们的一切。或者,如果你建议其他的东西 - 我会读到的。:)我只是不想花时间阅读一些无用的东西或“不正确的做法”。

感谢任何帮助!

+0

你应该接受的答案,如果他们帮助你。 –

回答

0

大家好!谢谢大家的好回答。但是我发现问题是我对面向对象编程一无所知。 (Ans我在Laravel工作:))。

当我从Laracasts采取面向对象的培训营模式后,我开始'看到'Laravel是如何工作的,我知道可以很容易地在类中创建方法并在其他类中使用它们。

https://laracasts.com/series/object-oriented-bootcamp-in-php

(当然,你可以阅读OOP别的东西,但杰弗里路有真正优秀的人才解释!)

1

1)您可以创建form request validation或者您可以创建一个私有函数来处理验证并返回结果。

2)您可以创建一个helpers.php文件,请参阅here,并将您的翻译功能放入其中。那么你可以从任何地方拨打它:
在控制器中transliterate_this($data);
在视图{{ transliterate_this($data); }}

1
  1. 即使在FromRequest中也可以执行复杂的验证。例如,您可以重写getValidatorInstance,或重写基类中的任何其他方法,以在基本验证规则之上插入验证逻辑。否则,考虑使用外部类来处理复杂的验证,并使用Laravel的IoC容器将其注入到控制器中。

  2. 您应该创建一个外观以提供该功能。然后你可以很容易地在任何地方使用它(并且如果这让你感觉更好,还可以为它创建一个辅助方法)。类似于Transliterate::toLatin($str)

相关问题