راکت
حل شده

array to string conversion laravel

15 پاسخ

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

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

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

ثبت پرسش جدید

پاسخ‌ها

15
Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

بهترین پاسخ

سلام
@oxbir

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

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

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

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام
@oxbir

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

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

محمود خسروی
محمود خسروی
@oxbir

تخصص: طراح و برنامه نویس

سلام
@Alimotreb

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

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

شاید پاسخ شما همین‌جا باشد

محمود خسروی
محمود خسروی
@oxbir

تخصص: طراح و برنامه نویس

به این شکل؟

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
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

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

تخصص: طراح و برنامه نویس

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

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
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام مجدد
@oxbir

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

محمود خسروی
محمود خسروی
@oxbir

تخصص: طراح و برنامه نویس

محمود خسروی
محمود خسروی
@oxbir

تخصص: طراح و برنامه نویس

@Alimotreb

سلام مجدد

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

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

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

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

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

محمود خسروی
محمود خسروی
@oxbir

تخصص: طراح و برنامه نویس

سلام مجدد

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

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

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

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام
@oxbir

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

محمود خسروی
محمود خسروی
@oxbir

تخصص: طراح و برنامه نویس

سلام مجدد

خیر

محمود خسروی
محمود خسروی
@oxbir

تخصص: طراح و برنامه نویس

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

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

protected $table = ['send_sms'];

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

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