Как передать значения из представлений в контроллер - PullRequest
0 голосов
/ 13 января 2019

В представлении. Когда мы направляем кнопку в функцию внутри контроллера, как мы можем передать два или более значений из присутствующих во время этого представления.

Я практиковался в создании системы управления результатами студентов. В представлении, перенаправленном из индекса ResultController, у нас есть опции ссылок для просмотра листа отметок класса .. или отдельного студента. Когда мы щелкаем по выбору класса, он перенаправляет на представление, где есть два раскрывающихся списка, чтобы выбрать класс и группу учащихся. Когда мы выбираем уважаемый класс и пакет, значения class_id и batch_id направляются для получения результата функции в ResultControler, мы выбираем учащихся из этого класса и пакета ... и соответствующие предметы и возвращаем представление. В этом представлении мы показываем метки учеников (если они есть), и ниже я включил кнопку для добавления меток / создания меток.

Но я так запутался, как я могу передать эти class_id и batch_id для создания функции внутри ResultController, с кнопки.

public function index()
{
    return view('resultmainpage');
}



public function choose()
{
    $classes= Sclass::all();
    $batches= Batch::all();

    return view('chooseclassbatchresult',compact('classes','batches'));
}

public function result(Request $request)
{
    $classid = $request->class;
    $batchid = $request->batch; 
    //dd($batchid);

    $students =Student::where('sclass_id',$classid)
                        ->where('batch_id', $batchid)
                        ->whereHas('subject')
                        ->get();

    $class= Sclass::findOrFail($classid);                    

    return view('showstudentresult',compact('students','class','classid','batchid'));
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
     // I need class_id and batch_id here


   // dd($classidd);

    $students = Student::where('sclass_id',$classid)
                        ->where('batch_id',$batchid)
                        ->whereDoesntHave('subject')
                        ->get();

         //dd($students);               

Маршрут:

Route::get('/rms','MainPageController@index')->name('rms');

Route::get('results/choose','ResultController@choose')->name('chooseresult');

Route::post('/showstudentresult','ResultController@result')->name('showstudentresult');

Route::resource('results','ResultController');

chooseclassbatchresult.blade.php

@extends('layout')


@section('content')
    <h1>Please Choose the Class and Respected Batch Of Student For Result</h1>

    </br>
    </br>

    <form action="{{route('showstudentresult')}}" method="post">
        @csrf

        <p>
            <label>Class Name</label>

            <select name='class'>
                @foreach($classes as $class)
                    <option value="{{$class->id}}">{{$class->name}}</option>
                @endforeach
            </select>
            </br>
        </p>

        <p>
            <label>Batch</label>
            <select name='batch'>

                @foreach($batches as $batch)
                    <option value="{{$batch->id}}">{{$batch->batch}}</option>
                @endforeach
            </select>

        </p>

        </br>

        <input type="submit" value="View">
    </form>

    </br>
    </br>
    </br>

    <h1>OR</h1>

    <h3>
        <button><a href={{route('students.create')}}>Add New Student</a></button>
    </h3>
@endsection

Showstudentresult.blade.php

@extends('layout')


@section('content')

    <table border=1>
        <thead>

        <tr>
            <th>S.N</th>
            <th>Name</th>
            <th>Roll NO</th>
            @foreach($class->subjects as $subject)
                <th>{{$subject->name}}</th>
            @endforeach
            <th>Total Mark</th>
            <th>Percentage</th>
            <th>Division</th>
            <th>Action</th>
        </tr>
        </thead>
        <tbody>
        <?php $id = 1; ?>

        @foreach($students as $student)
            <tr>
                <td><?php echo $id;?></td>
                <td>{{$student->name}}</td>
                <td>{{$student->roll}}</td>
                @foreach($student->subjects as $subject)
                    <th>{{$subject->pivot->mark}}</th>
                @endforeach
                <td>{{$student->result->total_mark}}</td>
                <td>{{$student->result->percentage}}</td>
                <td>{{$student->result->division}}</td>
                <td>
                    <table>
                        <tr>
                            <td>
                                <button><a href="{{route('students.edit',$student->id)}}">Edit</a></button>
                            </td>
                            <td>
                                <form action="{{route('students.destroy',$student->id)}}" method="post">
                                    @csrf
                                    @method('DELETE')
                                    <input type="submit" value="Delete"
                                           onclick="return confirm('Are you sure you want to delete the student?')">
                                </form>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <?php $id++ ?>
        @endforeach
        </tbody>
    </table>

    </br>
    </br>

    <button><a href={{results.create}}>Create New</a></button>
@endsection

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Спасибо за ваш ответ. У меня есть способ обойти свой вопрос. Я узнал, что вы можете использовать input type = "hidden" для переноса этих значений обратно в контроллер.

Создать маршрут:

Route::post('/create_res', 'ResultController@create_res')->name('results.create_res');

В представлении chooseclassbatchresult.blade.php

<form action="{{route('results.create_res')}}" method="POST">
    @csrf

<input type="hidden" name="classid" value="{{$classid}}">
<input type="hidden" name="batchid" value="{{$batchid}}"> 


<input type="submit" value="Create Mark Sheet">

</form>

В контроллере результатов;

public function create_res(Request $request){


        $classid = $request->classid;

        $batchid = $request->batchid;



        $students = Student::where('sclass_id',$classid)
                            ->where('batch_id',$batchid)
                            ->whereDoesntHave('subject')
                            ->get();

         $classes= Sclass::findOrFail($classid);   
         //dd($students);            


        return view('addmarksheet',compact('students','classes'));
    }
0 голосов
/ 13 января 2019

Как предложил Росс Уилсон в комментарии

Я бы предложил создать отдельную страницу, похожую на chooseclassbatchresult с формой, которая отправляет данные для создания

Добавьте маршрут в ваши файлы маршрутов, например:

Route::post('/createPage', 'ResultController@createPage')->name('createPage');

В ResultController добавить следующую функцию:

public function createPage(Request $request)
{
    // Get your required ids here
    $classid = $request->class;
    $batchid = $request->batch; 
    //dd($classid);
    //dd($batchid );
}

В вашем chooseclassbatchresult представлении добавьте еще одну форму, как показано ниже

<form action="{{ route('createPage') }}" method="post">
        @csrf
        <p>
            <label>Class Name</label>

            <select name='class'>
                @foreach($classes as $class)
                    <option value="{{$class->id}}">{{$class->name}}</option>
                @endforeach
            </select>
            </br>
        </p>

        <p>
            <label>Batch</label>
            <select name='batch'>

                @foreach($batches as $batch)
                    <option value="{{$batch->id}}">{{$batch->batch}}</option>
                @endforeach
            </select>

        </p>

        </br>

        <input type="submit" value="View">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...