Laravel在发送小数时遇到问题

时间:2015-11-04 12:30:57

标签: laravel decimal blade

我有一个价格

的刀片模板表单
              {!!Form::open(array('method'=>'POST','route'=>array('order.store'))) !!}

              <div class="form-group">

                {!! Form::label('price', 'Price:', ['class' => 'control-label']) !!}
                {!! Form::number('price', null, ['class' => 'form-control']) !!}
               </div>


               {!! Form::submit('Submit Order', ['class' => 'btn btn-primary']) !!}
                {!! Form::close() !!}

控制器收取价格并将其发送至电子邮件:

class OrderController extends Controller
{
 public function store()
    {
            $data=Input::all();
            //Validation rules
            $rules = array (


              'price'       => 'required|regex:/[\d]{2}.[\d]{2}/',
             );

     $validator  = Validator::make ($data, $rules);


             //If everything is correct than run passes.
        if ($validator -> passes()){

            //Send email using Laravel send function
            Mail::send('emails.order_received', $data, function($msg) use ($data)
            {
            //email 'From' field: Get users email add and name
                $msg->from($data['email'] , $data['owner']);
            //email 'To' field: change this to emails that you want to be notified.                    
                $msg->to('on@dx.com', 'Rn')->subject('New Order');

            });

            return Redirect::route('order.index')->with('flash_notice', 'Thank you');  
         }

        else
        {
            //return contact form with errors

            return Redirect::route('order.index')->withErrors($validator)->with('flash_error', 'This is not how one shops');
        }
    }
  }

该表格将传递给电子邮件模板。

    <?php
//get the first name
$item = Input::get('item');
$manufacturer = Input::get ('manufacturer');
$price = Input::get('price');
$quantity = Input::get ('quantity');
$product_code = Input::get ('product_code');
$owner = Input::get ('owner');
$email = Input::get("email");
$created_at = Input::get("date");
?> 

当我尝试添加价格,即(3.65)时,刀片形式继续返回整数的错误消息。我的迁移将价格作为小数(2,2)我无法理解为什么我的表单会抛出错误。任何帮助将非常感激。

P.S。除了正则表达式规则,我已经尝试了浮点数和小数。现在,如果我尝试使用正则表达式规则输入2而不是02.00,则会根据正则表达式引发错误。但是,如果我尝试遵循正则表达式规则,它需要一个整数(错误说明在X和Y之间)。

由于 中号

1 个答案:

答案 0 :(得分:1)

首先,您肯定希望使用numeric规则进行验证。

其次,您使用的是HTML5输入字段number,默认情况下只接受整数,而不是浮点数。

如果您希望它也接受浮点数,因此不会触发内置验证的浏览器,请将您的代码更改为以下内容:

{!! Form::number('price', null, ['class' => 'form-control', 'step' => 'any']) !!}

或者,当然,您可以使用text输入并自行进行内联验证。