这是一个普遍的问题,我希望有人指出我应该去的方向。
1)同一控制器的功能:我有两种方法:在同一个控制器中存储和更新。它们都应该包含一些复杂的请求验证(我不能通过验证器或表单请求验证,因为它太复杂了)。这对我来说意味着现在在两种方法中使用相同的代码两次...如何使用这一代码,创建一个函数并在Store和Update方法中使用它只需一行,如:
do_this_function($data);
2)DIFF的功能。控制器:我有另一个代码,我在许多不同的控制器中使用。它将俄语字母音译为拉丁字母('Сергей'='谢尔盖'等等)。如何以及在何处注册此功能以便能够在不同的控制器中使用它?
transliterate_this($data);
我已经读过一些关于助手的事情了。我应该使用它们吗?如果你是一位经验丰富的Laravel develper并且这么说,我会读到关于他们的一切。或者,如果你建议别的东西 - 我会读到这个。:)我只是不想花时间阅读一些无用或“不正确的方法”。
感谢任何帮助!
答案 0 :(得分:1)
1)你可以创建一个form request validation,或者你可以创建一个私有函数来处理验证并返回结果。
2)您可以创建一个helpers.php文件,参见here,然后将翻译功能放入其中。然后你可以从任何地方打电话:
在控制器transliterate_this($data);
中
在视图中{{ transliterate_this($data); }}
。
答案 1 :(得分:1)
即使在FromRequest内,您也可以进行复杂的验证。例如,您可以覆盖getValidatorInstance或基类中的任何其他方法,以在基本验证规则之上插入验证逻辑。另外,只需考虑使用外部类来处理复杂的验证,并使用Laravel的IoC容器将其注入控制器。
您应该创建一个外观来提供该功能。然后你可以轻松地在任何地方使用它(如果它让你感觉更好,另外为它创建一个帮助方法)。像localhost:8080/api/any/url
答案 2 :(得分:0)
大家好!谢谢大家的好消息。但我发现问题在于我对面向对象编程一无所知。 (Ans我在Laravel工作:))。
在我从Laracasts获取面向对象的训练营之后,我开始“看到”Laravel实际上是如何工作的,我知道可以轻松地在类中创建方法并在其他类中使用它们。
https://laracasts.com/series/object-oriented-bootcamp-in-php
(当然,你可以在OOP上阅读其他内容,但Jeffrey Way拥有非常出色的解释天赋!)