본문 바로가기

php 헛다리/Laravel9 헛다리

라라벨9 widgets 사용법 - 컨트롤러 호출

728x90

 

라라벨9 widgets 사용법 - 컨트롤러 호출

 

widgets 사용법 - 컨트롤러 호출

위젯 생성

#> php artisan make:component WidgetMemo002

/app/Http/Controllers/MemoDefaultController.php - 컨트롤러

<?php


namespace App\Http\Controllers;

use App\Models\Memo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\View; // 위젯 사용시



class MemoDefaultController
{

........
................


    public function memo_list()
    {
         ........
         ................................


         //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////
        /// 위젯테스트  sss
        // 위젯 호출  
        // public_html/app/View/Components/WidgetMemo002.php 파일 호출
        // 데이터 전달 부분 ['arr_widget_data' => $arr_return_data] 

        // 컴포넌트를 직접 렌더링하여 뷰에 전달
        
        // 전송값 없을시
//        $widget_memo002 = (new \App\View\Components\WidgetMemo002())->render()->render();
        
        // 전송값 있을시
        $arr_request_data['test'] = 1111;
        $widget_memo002 = (new \App\View\Components\WidgetMemo002(['arr_request_data' => $arr_request_data]))->render()->render();


        // 이방법은 가공한 데이터 출력이 안됨. 이유는 모름
//        $widget_memo002 = View::make('components.widget-memo002', ['arr_widget_data' => $arr_return_data])->render();
//        $widget_memo002 = View::make('components.widget-memo002')->render(); // 전달값 없이 호출

        /// 위젯테스트  eee
        //////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////


        return view( $cfg_view, compact('arr_return_data','widget_memo002')); //

    }

....
......
}

 

public_html/app/View/Components/WidgetMemo002.php


<?php

namespace App\View\Components;

use Illuminate\View\Component;

class WidgetMemo002 extends Component
{
    /**
     * Create a new component instance.
     *
     * @return void
     */

    public $arr_return_data;
    public $arr_request_data;


    public function __construct($arr_request_data)
    {

        $arr_request_data;
        debug_var($arr_request_data);

        $arr_VARIABLE_DATA['url_go_list']   =  "/memo_list";
        $arr_VARIABLE_DATA['url_go_insert_form']  =  "/memo_insert_form";

        $arr_return_data = $arr_VARIABLE_DATA;

        $this->arr_return_data = $arr_return_data;

        debug_var($this->arr_return_data);

//        print_r($this->arr_return_data);
    }

    /**
     * Get the view / contents that represent the component.
     *
     * @return \Illuminate\Contracts\View\View|\Closure|string
     */
    public function render()
    {

        // 위젯 html 에 데이터 전달
        return view('components.widget-memo002', ['arr_return_data'=> $this->arr_return_data ]);
    }
}

 

 

/resources/views/components/widget-memo002.blade.php

<h2 class="mt-4 mb-3">Memo List </h2>


<button type="button" id="btn_addnew" class="btn btn-dark" style="float: right;">Create</button>




    <input type="text" id="url_go_list" value="{{ $arr_return_data['url_go_list'] }}">     <<<< 위젯에서 만든데이터
    <input type="text" id="url_go_insert_form" value="{{ $arr_return_data['url_go_insert_form'] }}">   <<<< 위젯에서 만든데이터



<script>
    jQuery("button").bind(
        "click",function()
        {
            console.log( "this.id => " + this.id );

            switch(this.id)
            {
                // case "btn_sarch_submit":
                //
                //     var goUrl	=	jQuery("#url_go_list").val();
                //     goUrl	+=	"/sch_type/" + encodeURIComponent( jQuery("#sch_type").val() );
                //     goUrl	+=	"/sch_keyword/" + encodeURIComponent( jQuery("#sch_keyword").val() );
                //     window.location.href	=	goUrl;
                //     //	$(location).attr('href', url);
                //     //	window.location.href="/CI/index.php";
                //
                //     break;

                case "btn_addnew":
                    var Url_thisPage		=	jQuery("#url_go_insert_form").val();
                    window.location.href	=	Url_thisPage;

                    break;
            }//	end switch
        }
    );
// 희얀하게 스크립트 잘 동작한다.
</script>

 

 

/resources/views/memo/memo_list.blade.php

{{-- layout 으로 --}}
@extends( $arr_return_data['cfg_pageLayout'] ) {{--@extends('layout.layout_default')--}}

{{-- 아래 html 을 @yield('content') 에 보낸다고 생각하시면 됩니다. --}}
@section('content')
    {!! $widget_memo002 !!}  // 컨트롤러에서 호출한 위젯
@endsection



@section('scripts')

@endsection

 

 

728x90