条带的处理逻辑应该在Laravel控制器中还是在验证器中?
我是拉威尔的新来者。我有一个这样的控制器条带的处理逻辑应该在Laravel控制器中还是在验证器中?,laravel,validation,request,rules,Laravel,Validation,Request,Rules,我是拉威尔的新来者。我有一个这样的控制器 public function buy(Request $request, User $user) { \Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxxx"); $token = $_POST['stripeToken']; $charge = \Stripe\Charge::create([ 'amount' => 100,
public function buy(Request $request, User $user) {
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxxx");
$token = $_POST['stripeToken'];
$charge = \Stripe\Charge::create([
'amount' => 100,
'currency' => 'aud',
'description' => 'Example charge',
'source' => $token,
]);
if ($charge->status === "succeeded") {
//-- Processing... --//
}
我想问一个更合适的设计风格,我是否应该把STTRIE的部分放在其他地方,比如验证器。
如果是,则是制定规则和请求,而不是在验证器中进行验证
有人能告诉我如何在请求中使用规则吗?创建条带费用不是请求验证。这是对Stripe的API调用。因此,它绝对不应该留在验证器中 对于小型应用程序,您可以在控制器中使用此逻辑,但对于具有抽象功能的中/大型应用程序(例如,如果您希望以后可以选择将支付提供商从Stripe更改为Braintree),它应该位于服务类中
此外,切勿直接使用
$\u POST
。改用$request->input
。根据经验,如果有两种方法可以在代码中执行某些操作,请始终使用实现更高级别库的方法(库>然后是框架>然后是核心PHP)。使用Laravel 5.5编写验证+
public function buy(Request $request, User $user)
{
// first define your rules
$rules = [
'amount' => 'required|numeric'
];
$validatedData = $request->validate($rules);
// The purchase is valid...
}
对于Laravel 5.0-5.4:
public function buy(Request $request, User $user)
{
// first define your rules
$rules = [
'amount' => 'required|numeric'
];
$validatedData = $this->validate($rules);
// The purchase is valid...
}
在我看来,控制员的典型职责是:
我认为进行一次条件检查或验证检查可能是好的。这两个地方都不是最好的地方。业务逻辑应该存在于模型或服务类中。您是否正在验证条带
$charge
或您的$request
?谢谢@adam。我更喜欢将逻辑划分到不同的位置,这样控制器就不会看起来太混乱。我原本以为我会自定义一个条带规则,然后在laravel的请求中使用它。