Не могу сохранить в Laravel 5.7 - ничего не происходит - PullRequest
0 голосов
/ 07 января 2019

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

Я искал здесь и в Интернете, нашел что-то похожее, но ничего, что могло бы помочь.

У меня есть такой вид:

<div class="form-group">
    {!! csrf_field() !!}        

    @if(isset($impressora))       

        <div class="form-row">
            <div class="form-group col-md-4">
                <label for="setor">Setor*:</label>
                <input class="form-control" placeholder="Digite o setor..." required="required" name="setor" type="text" value="{{ $impressora->setor }}" id="setor">
            </div>
            <div class="form-group col-md-4">
                <label for="marca">Marca*:</label>
                <input class="form-control" placeholder="Digite a marca..." required="required" name="marca" type="text" value="{{ $impressora->marca }}" id="marca">
            </div>
            <div class="form-group col-md-4">
                <label for="modelo">Modelo*:</label>
                <input class="form-control" placeholder="Digite o modelo..." required="required" name="modelo" type="text" value="{{ $impressora->modelo }}" id="modelo">
            </div>     
        </div>

        <div class="form-row">
            <div class="form-group col-md-4">
                <label for="tipo">Tipo*:</label>                    
                <select name="tipo" id="tipo" class="form-control" required="required">
                    <option value="Toner">Toner</option>
                    <option value="Tinta">Tinta</option>
                    <option value="Pecas">Peças</option>
                </select>
            </div>
            <div class="form-group col-md-4">
                <label for="tonner">Tonner*:</label>                    
                <select name="toner" id="toner" class="form-control" required="required">
                    <option value="Q2612A">Q2612A</option>
                    <option value="TN580/650">TN580/650</option>
                    <option value="T664 - PRETO">T664 - PRETO</option>
                    <option value="T664 - AMARELO">T664 - AMARELO</option>
                    <option value="T664 - CIANO">T664 - CIANO</option>
                    <option value="T664 - MAGENTA">T664 - MAGENTA</option>
                    <option value="CARTUCHO 45">CARTUCHO 45</option>
                    <option value="12017SR">12017SR</option>
                    <option value="CE278A">CE278A</option>
                    <option value="CB435A/CB436A/CE285A">CB435A/CB436A/CE285A</option>
                    <option value="TN360">TN360</option>
                    <option value="TN3472">TN3472</option>
                    <option value="TN750">TN750</option>
                    <option value="AMARELO">AMARELO</option>
                    <option value="CIANO">CIANO</option>
                    <option value="MAGENTA">MAGENTA</option>
                    <option value="PRETO">PRETO</option>
                    <option value="ROLO PRESSÃO BROTHER HL2240">ROLO PRESSÃO BROTHER HL2240</option>
                    <option value="ROLO PRESSÃO BROTHER HL2270">ROLO PRESSÃO BROTHER HL2270</option>
                    <option value="TN660">TN660</option>
                    <option value="LEXMARK E120">LEXMARK E120</option>
                    <option value="CLINDRO BROTHER DCP8080">CLINDRO BROTHER DCP8080</option>
                    <option value="CLINDRO BROTHER DR450">CLINDRO BROTHER DR450</option>
                    <option value="CLINDRO BROTHER DR620">CLINDRO BROTHER DR620</option>
                    <option value="CLINDRO BROTHER DR350">CLINDRO BROTHER DR350</option>
                    <option value="ROLO DE PAPEL DE PONTO">ROLO DE PAPEL DE PONTO</option>
                    <option value="TN450">TN450</option>
                </select>
            </div>
            <div class="form-group col-md-4">
                <label for="setor">Marca do Toner*:</label>                    
                <select name="tonerMarca" id="tonerMarca" class="form-control" required="required">
                    <option value="TONER CARTRIDGE">TONER CARTRIDGE</option>
                    <option value="EVOLUT">EVOLUT</option>
                    <option value="CHINAMATE">CHINAMATE</option>
                    <option value="EPSON">EPSON</option>
                    <option value="HP">HP</option>
                    <option value="S.M.">S.M.</option>
                    <option value="A.E.">A.E.</option>
                    <option value="TONER LASER">TONER LASER</option>
                    <option value="MC">MC</option>
                    <option value="J.PROLAB">J.PROLAB</option>
                    <option value="PQTC">PQTC</option>
                    <option value="KATUN">KATUN</option>
                    <option value="N.S.">N.S.</option>
                </select>
            </div>
        </div>

        <div class="form-row">
            <div class="form-group col-md-4">
                <label for="datacompra">Data da Troca*:</label>
                <input class="form-control" required="required" name="datacompra" type="date" value="" id="datacompra">
            </div>
            <div class="form-group col-md-4">
                <label for="local">Quantidade*:</label>                                     
                <input class="form-control" placeholder="Quantidade de toner..." required="required" name="quantidade" type="text" id="quantidade">               
            </div>                
            <div class="form-group col-md-4">
                <label for="local">Folhas*:</label>                                     
                <input class="form-control" placeholder="Quantidade de folhas..." required="required" name="folhas" type="text" id="folhas">
            </div>
        </div>           
    @endif

    <div class="form-group">            
        <input type="submit" Value="Salvar" class="btn btn-primary form-control">
    </div>
</div>

У меня есть модель, подобная этой:

<?php

namespace SouzaCambos;

use Illuminate\Database\Eloquent\Model;

class TiPrinter extends Model
{
   protected $table = 'titoner_troca';

   protected $primaryKey = 'idtroca';

   public $timestamps = false;

   public $increment = false;    
}

И в моем контроллере у меня есть это:

public function printerInsert(Request $request){

    $PrinterTable = TiPrinter::all();

    //dd($PrinterTable);

    if ($PrinterTable->idtroca != null) {
        $oldsheet = TiPrinter::latest('folhas')
            ->where('marca', $request->marca)
            ->where('modelo', $request->modelo)
            ->where('toner', $request->toner)
            ->where('marca_toner', $request->tonerMarca)
            ->first();

        $pageCount = TiPrinter::latest('folhasnew')
            ->where('marca', $request->marca)
            ->where('modelo', $request->modelo)
            ->where('toner', $request->toner)
            ->where('marca_toner', $request->tonerMarca)
            ->first();
    }   

    $TiPrinter = new TiPrinter;
    $TiPrinter->setor = $request->setor;
    $TiPrinter->marca = $request->marca;
    $TiPrinter->modelo = $request->modelo;
    $TiPrinter->toner = $request->toner;
    $TiPrinter->marca_toner = $request->tonerMarca;
    $TiPrinter->folhas = $request->folhas;

    if (is_null($pageCount)) {
        $pageCount->folhasnew = 0;
    } elseif ($pageCount->folhasnew >= 0) {            
        $pageCount->folhasnew = $request->folhas - $oldsheet->folhas;
        $TiPrinter->folhasnew = 0;
        //$TiPrinter->folhasnew = $request->folhas - $oldsheet->folhas;
    }      

    //Decremento toner
    $printerSub = TiToner::where('modelo', $request->toner)
        ->where('marca', $request->tonerMarca)
        ->first();

    $printerSub->quantidade = $printerSub->quantidade - $request->quantidade;
    $printerSub->data = $request->dataTroca;

    //Save na tabela toner
    if ($pageCount != null) {
        $pageCount->save();
    }
    $TiPrinter->save();
    $printerSub->save();        

    return redirect()->to('portal-cambos/ti/impressoras/TiImpressorasToner');
}

Кроме того, я не получаю ничего в dd ($ PrinterTable); Кроме того, я уже много раз искал этот код и не видел ни одного неверного или отличного от других кодов, которые я написал ранее.

Может кто-нибудь, пожалуйста, помогите мне? Может быть, кто-то увидит то, чего я не увидел.

Спасибо всем заранее, и если есть какой-то пост, касающийся этого вопроса, и я скучаю по нему, пожалуйста, дайте мне знать об этом.

1 Ответ

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

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

<form method="post" action="{{ action('TestController@test') }}">

Кнопка отправки, расположенная рядом с этой формой, в основном вызывает метод test в TestController, разумеется, вам нужно изменить его в соответствии с вашими потребностями.

Во-вторых, у вас есть много полей в вашей «форме», но у вас нет заполняемого массива в вашей модели, вам нужно добавить каждое поле (столбец) в заполняемый массив по соображениям безопасности, выполните следующие действия:

class TiPrinter extends Model
{
   protected $table = 'titoner_troca';

   protected $fillable = ['value1', 'value2']; // add every fillable name into this array
}

Вам необходимо добавить все ваши заполняемые элементы, например, если у меня есть форма, и только значения1 и значение2 будут сохранены или изменены, все будет в порядке.

В-третьих, вы должны иметь возможность сохранить TiPrinter в своем методе магазина следующим образом:

public function store(Request $request) {
    $tiprinter = TiPrinter::create($request->all());

    if($tiprinter) {
        // success redirect to somewhere....
    }

    // error do something*
}

Просто попробуйте эти шаги, и если это не помогло, предоставьте больше информации.

...