به کد ههای من توجه کنید
web.php
Route::get('/code', 'HomeController@code')->name('code');
Route::post('/send', 'HomeController@send')->name('send');
HomeController.php
<?php
namespace App\Http\Controllers;
use App\Blog;
use App\Faq;
use App\SendSMS;
use App\Service;
use App\Slideshow;
use App\User;
use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* Show the application dashboard.
*
* @return void
*/
public function index()
{
$slideshows = Slideshow::latest()->get();
$services = Service::latest()->get();
$faqs = Faq::latest()->get();
$blogs = Blog::latest()->get();
return view('Home.index', compact('slideshows', 'services', 'faqs', 'blogs'));
}
public function machines()
{
return view('Home.machines');
}
public function networks()
{
return view('Home.networks');
}
public function computers()
{
return view('Home.computers');
}
public function internets()
{
return view('Home.internets');
}
public function code()
{
return view('Home.send');
}
public function send(Request $request, $mobile = '09389267856')
{
if($request->ajax()) {
$request->validate([
'mobile_number' => 'required',
]);
$sendSms = new SendSMS;
$sendSms->mobile_number = $request->mobile_number;
$sendSms->code = rand(10000,99999);
if ($sendSms->save()) {
try {
$api = new \Kavenegar\KavenegarApi("Example Api");
$sender = "10004346";
$message = " $sendSms->code ";
$receptor = $mobile;
$result = $api->Send($sender, $receptor, $message);
if ($result) {
foreach ($result as $r) {
echo "messageid = $r->messageid";
echo "message = $r->message";
echo "status = $r->status";
echo "statustext = $r->statustext";
echo "sender = $r->sender";
echo "receptor = $r->receptor";
echo "date = $r->date";
echo "cost = $r->cost";
}
}
} catch (\Kavenegar\Exceptions\ApiException $e) {
echo $e->errorMessage();
} catch (\Kavenegar\Exceptions\HttpException $e) {
echo $e->errorMessage();
}
}
return response()->json(['data' => $request->mobile_number, 'id' => $sendSms->id]);
}
}
}
send.blade.php
@extends('Home.master')
@section('content')
<div id="networks" class="pt-5 pb-5 mt-5">
<div class="container">
<div class="row">
<div class="col-md-4 m-auto">
<div class="card mt-3">
<div class="card-header">
<h4>ثبت نام</h4>
</div>
<div class="card-body">
<form id="FormSend">
<div class="form-group" id="form-group-1">
<label for="mobile_number">شماره تلفن</label>
<input type="text" class="form-control" name="mobile_number" id="mobile_number">
</div>
<div class="form-group" id="form-group-2">
<label for="code">کد</label>
<input type="text" class="form-control" name="code" id="code">
</div>
<div class="form-group">
<button type="submit" class="btn btn-danger" id="btn-ok">تایید</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('script')
<script>
$(document).ready(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$("#btn-ok").click(function () {
$("#form-group-1").hide();
$("#form-group-2").fadeIn();
});
$('form').submit(function (event) {
event.preventDefault();
mobile_number = $('#mobile_number').val();
$.post("{{ route('send') }}", {mobile_number:mobile_number}, function (data) {
$('#mobile_number').val('');
console.log(data);
});
});
});
</script>
@endsection
وقتی که من بعد از ذخیره کردن شماره تلفن همراه، این خطا را می بینم.
سلام
@oxbir
$this->validate($request, [
'mobile_number' => 'required',
]);
$mobile_data = [
'mobile_number' => $request->input('mobile_number'),
];
$Send_new = SendSMS::create($mobile_data);
یه مثال ساده به این شکل
مدل مربوطه رو فراخونی کنید
نیم اسپیسشم وارد شه
متد create رو صدا بزنید
و هر تعداد متغیر دارید بریزید داخلش
سلام
@oxbir
مواردی که میخوایید توی دیتابیس ذخیره کنید رو بریزید توی یه آرایه و بعد از متد create استفاده کنید
این مورد رو تست بگیرید
وقتی هم ارسال میکنید یه dd() بگیرید از request
ببینید چیزی بر میگردونه
متغیر هایی که با ajax فرستادید رو اون طرف داریدشون یا خیر
سلام
@Alimotreb
من کد کامل را فرستادم و متد create را ندارم.
میشه بگی چطوری توی یه آرایه و بعد از متد create استفاده کنم
شاید پاسخ شما همینجا باشد
به این شکل؟
public function send(Request $request, $mobile = 'Mobile Number')
{
if($request->ajax()) {
$this->validate($request, [
'mobile_number' => 'required',
]);
$mobile_data = [
'mobile_number' => $request->input('mobile_number'),
'code' => rand(10000,99999),
];
if ($mobile_data->save()) {
try {
$api = new \Kavenegar\KavenegarApi("َApi Example");
$sender = "10004346";
$message = " $mobile_data->code ";سلام
@oxbir
بله ولی شما تو کد قبلیتون
$sendSms = new SendSMS;
یه شی ساختید
الان نیاز نیست شی بسازید
public function send(Request $request, $mobile = 'Mobile Number')
{
if($request->ajax()) {
$this->validate($request, [
'mobile_number' => 'required',
]);
$mobile_data = [
'mobile_number' => $request->input('mobile_number'),
'code' => rand(10000,99999),
];
$mobile_new = SendSMS::create($mobile_data);
if ($mobile_new && $mobile_new instanceof SendSMS) {
// if ($mobile_data->save()) {
try {
$api = new \Kavenegar\KavenegarApi("َApi Example");
$sender = "10004346";
$message = " $mobile_data->code ";
این مدل SendSMS رو هم حتما use شده باشه تو کنترلر
use App\Models\SendSMS;
البته اگر تو این مسیره!
اولش اشاره کرد به
Add \[mobile\_number\] to fillable property to allow mass assignment on \[AppSendSMS\]
بعدش رفتم مدل SendSMS، دستور زیر را اضافه کردم.
protected $fillable = ['mobile_number'];
بعدش خطای همین array to string conversion laravel را داد.
بعدش دستور dd() را نوشتم mobile_number را با شماره موبایل برام برگرداند.
public function send(Request $request, $mobile = 'Mobile Number')
{
dd($request->all());
مشکل هنوز حل نشده است.
سلام مجدد
@oxbir
شما شماره رو دریافت میکنید اوکی هست تا اینجا
ولیدیت هم میکنید
کوئری هم بزنید تو دیتابیس ذخیره کنید
به if رسیدید dd بگیرید ببینید مشکل از اونجا به بعد هست یا خیر
سلام
@oxbir
شما تا اینجای کد نباید مشکلی داشته باشید و کوئری باید ثبت بشه تو دیتابیس
$mobile_new = SendSMS::create($mobile_data);
if ($mobile_new && $mobile_new instanceof SendSMS) {
بعد این if باید مشکل داشته باشید که اون باید ماژول همون SMS و اینا بررسی شه.
سلام
@oxbir
کوئری ثبت شده یا نه؟
دیتا وارد دیتابیس شده یا نه