Laravel Create函数用于不同的控制器/同一个控制器

时间:2017-07-03 11:56:36

标签: laravel function

这是一个普遍的问题,我希望有人指出我应该去的方向。

1)同一控制器的功能:我有两种方法:在同一个控制器中存储和更新。它们都应该包含一些复杂的请求验证(我不能通过验证器或表单请求验证,因为它太复杂了)。这对我来说意味着现在在两种方法中使用相同的代码两次...如何使用这一代码,创建一个函数并在Store和Update方法中使用它只需一行,如:

do_this_function($data);

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

transliterate_this($data);

我已经读过一些关于助手的事情了。我应该使用它们吗?如果你是一位经验丰富的Laravel develper并且这么说,我会读到关于他们的一切。或者,如果你建议别的东西 - 我会读到这个。:)我只是不想花时间阅读一些无用或“不正确的方法”。

感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

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

2)您可以创建一个helpers.php文件,参见here,然后将翻译功能放入其中。然后你可以从任何地方打电话:
在控制器transliterate_this($data);中 在视图中{{ transliterate_this($data); }}

答案 1 :(得分:1)

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

  2. 您应该创建一个外观来提供该功能。然后你可以轻松地在任何地方使用它(如果它让你感觉更好,另外为它创建一个帮助方法)。像localhost:8080/api/any/url

  3. 这样的东西

答案 2 :(得分:0)

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

在我从Laracasts获取面向对象的训练营之后,我开始“看到”Laravel实际上是如何工作的,我知道可以轻松地在类中创建方法并在其他类中使用它们。

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

(当然,你可以在OOP上阅读其他内容,但Jeffrey Way拥有非常出色的解释天赋!)