محمود خسروی
6 سال پیش توسط محمود خسروی مطرح شد
15 پاسخ

array to string conversion laravel

به کد ههای من توجه کنید

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

وقتی که من بعد از ذخیره کردن شماره تلفن همراه، این خطا را می بینم.

توضیح تصویر


ثبت پرسش جدید
Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@oxbir

$this->validate($request, [
            'mobile_number' => 'required',
        ]);
        $mobile_data = [
            'mobile_number' => $request->input('mobile_number'),
        ];

        $Send_new = SendSMS::create($mobile_data);

یه مثال ساده به این شکل
مدل مربوطه رو فراخونی کنید
نیم اسپیسشم وارد شه
متد create رو صدا بزنید
و هر تعداد متغیر دارید بریزید داخلش


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش آپدیت شد
0

سلام
@oxbir

مواردی که میخوایید توی دیتابیس ذخیره کنید رو بریزید توی یه آرایه و بعد از متد create استفاده کنید
این مورد رو تست بگیرید

وقتی هم ارسال میکنید یه dd() بگیرید از request
ببینید چیزی بر میگردونه
متغیر هایی که با ajax فرستادید رو اون طرف داریدشون یا خیر


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش آپدیت شد
0

سلام
@Alimotreb

من کد کامل را فرستادم و متد create را ندارم.

میشه بگی چطوری توی یه آرایه و بعد از متد create استفاده کنم


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@oxbir

$this->validate($request, [
            'mobile_number' => 'required',
        ]);
        $mobile_data = [
            'mobile_number' => $request->input('mobile_number'),
        ];

        $Send_new = SendSMS::create($mobile_data);

یه مثال ساده به این شکل
مدل مربوطه رو فراخونی کنید
نیم اسپیسشم وارد شه
متد create رو صدا بزنید
و هر تعداد متغیر دارید بریزید داخلش


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش مطرح شد
0

به این شکل؟

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 ";

Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@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;

البته اگر تو این مسیره!


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش آپدیت شد
0

اولش اشاره کرد به

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());

مشکل هنوز حل نشده است.


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام مجدد
@oxbir

شما شماره رو دریافت میکنید اوکی هست تا اینجا
ولیدیت هم میکنید
کوئری هم بزنید تو دیتابیس ذخیره کنید
به if رسیدید dd بگیرید ببینید مشکل از اونجا به بعد هست یا خیر


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 6 سال پیش مطرح شد
0

به نظرم .. در وارد کردن داده ها به دیتابیس مشکل دارید.


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش مطرح شد
محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش مطرح شد
0

@Alimotreb

سلام مجدد

به if رسیدم باز همون خطا را میدهد همین عکس خطای 500


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@oxbir
شما تا اینجای کد نباید مشکلی داشته باشید و کوئری باید ثبت بشه تو دیتابیس

$mobile_new = SendSMS::create($mobile_data);
        if ($mobile_new && $mobile_new instanceof SendSMS) {

بعد این if باید مشکل داشته باشید که اون باید ماژول همون SMS و اینا بررسی شه.


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش آپدیت شد
0

سلام مجدد

این را وارد کردم

        $mobile_new = SendSMS::create($mobile_data);
        if ($mobile_new && $mobile_new instanceof SendSMS) {
            dd('salam');

اما هیچ مقداری را برام برنگردون همین خطای 500 را نمایش داد


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
1

سلام
@oxbir

کوئری ثبت شده یا نه؟
دیتا وارد دیتابیس شده یا نه


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش مطرح شد
0

سلام مجدد

خیر


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 6 سال پیش آپدیت شد
0

ممنون حالا درست شد

مشکل از مدل بود

protected $table = ['send_sms'];

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام