【问题标题】:Edit in Laravel + AngularJS在 Laravel + AngularJS 中编辑
【发布时间】:2016-10-22 08:50:06
【问题描述】:

我正在使用 laravel + angularjs 构建一个完整的 crud,但我在“编辑”部分遇到了问题。

这是一个内部服务器错误,所以我不知道这意味着什么,我需要帮助。

错误“GET localhost/crudtcc/public/api/v1/colaboradores/editar/3 500(内部服务器错误)”

javascript 文件:

app.controller('colaboradoresController', function($scope, $http, API_URL) {

  $http.get(API_URL + "colaboradores")
    .success(function(response) {
      $scope.colaboradores = response;
    });

  $scope.toggle = function(modalstate, id_colaborador) {
    $scope.modalstate = modalstate;

    switch (modalstate) {
      case 'add':
        $scope.form_title = "Novo colaborador";
        $scope.colaborador = null;
        break;
      case 'edit':
        $scope.form_title = "Dados do colaborador";
        $scope.id_colaborador = id_colaborador;

        $http.get(API_URL + 'colaboradores/editar/' + id_colaborador)
          .success(function(response) {
            console.log(response);
            $scope.colaborador = response;
          });
        break;
      default:
        break;
    }

    $('#myModal').modal('show');
  }

  $scope.save = function(modalstate, id_colaborador) {
    var url = API_URL + "colaboradores/salvar";

    if (modalstate === 'edit') {
      url += "/editar/" + id_colaborador;
    }

    $http({
      method: 'POST',
      url: url,
      data: $.param($scope.colaborador),
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    }).success(function(response) {
      console.log(response);
      location.reload();
    }).error(function(response) {
      console.log(response);
      alert('Um erro ocorreu. Check a log para mais detalhes.');
    });
  }

  $scope.confirmDelete = function(id_colaborador) {

    var isConfirmDelete = confirm('Tem certeza que deseja excluir o registro?');
    if (isConfirmDelete) {
      $http({
        method: 'DELETE',
        url: API_URL + 'colaboradores/remover/' + id_colaborador
      }).
      success(function(data) {
        console.log(data);
        location.reload();
      }).
      error(function(data) {
        console.log(data);
        alert('Falha na exclusão');
      });
    } else {
      return false;
    }
  }

});

路由文件:

    <?php

       namespace App\Http\Controllers;
    $colaborador = new Colaborador;

 use Illuminate\Http\Request;
 use App\Http\Requests;
 use App\Usuario;
 use App\Http\Controllers\Controler;
 use App\Colaborador;

class Colaboradores extends Controller
{
public function index()
{
       return Colaborador::orderBy('id_colaborador', 'asc')->get();
}

public function salvar(Request $request)
{
    $colaborador->nome = $request->input('nome');
    $colaborador->rg = $request->input('rg');
    $colaborador->orgao_expedidor = $request->input('orgao_expedidor');
    $colaborador->cpf = $request->input('cpf');
    $colaborador->estado_civil = $request->input('estado_civil');
    $colaborador->sexo = $request->input('sexo');
    $colaborador->nome_pai = $request->input('nome_pai');
    $colaborador->nome_mae = $request->input('nome_mae');
    $colaborador->naturalidade = $request->input('naturalidade');
    $colaborador->data_nascimento = $request->input('data_nascimento');
    $colaborador->login = $request->input('login');
    $colaborador->senha = $request->input('senha');
    $colaborador->siape = $request->input('siape');
    $colaborador->pis = $request->input('pis');
    $colaborador->rua = $request->input('rua');
    $colaborador->numero = $request->input('numero');
    $colaborador->bairro = $request->input('bairro');
    $colaborador->cidade = $request->input('cidade');
    $colaborador->estado = $request->input('estado');
    $colaborador->cep = $request->input('cep');
    $colaborador->telefone_fixo = $request->input('telefone_fixo');
    $colaborador->telefone_celular= $request->input('telefone_celular');
    $colaborador->telefone_comercial = $request->input('telefone_comercial');
    $colaborador->email = $request->input('email');


    $colaborador->save();

    return 'Colaborador salvo com sucesso! ID: ' . $colaborador->id_colaborador;

}

public function update(Request $request,$id_colaborador)
{
    $colaborador = Colaborador::find($id_colaborador);

    $colaborador->nome = $request->input('nome');
    $colaborador->rg = $request->input('rg');
    $colaborador->orgao_expedidor = $request->input('orgao_expedidor');
    $colaborador->cpf = $request->input('cpf');
    $colaborador->estado_civil = $request->input('estado_civil');
    $colaborador->sexo = $request->input('sexo');
    $colaborador->nome_pai = $request->input('nome_pai');
    $colaborador->nome_mae = $request->input('nome_mae');
    $colaborador->naturalidade = $request->input('naturalidade');
    $colaborador->data_nascimento = $request->input('data_nascimento');
    $colaborador->login = $request->input('login');
    $colaborador->senha = $request->input('senha');
    $colaborador->siape = $request->input('siape');
    $colaborador->pis = $request->input('pis');
    $colaborador->rua = $request->input('rua');
    $colaborador->numero = $request->input('numero');
    $colaborador->bairro = $request->input('bairro');
    $colaborador->cidade = $request->input('cidade');
    $colaborador->estado = $request->input('estado');
    $colaborador->cep = $request->input('cep');
    $colaborador->telefone_fixo = $request->input('telefone_fixo');
    $colaborador->telefone_celular= $request->input('telefone_celular');
    $colaborador->telefone_comercial = $request->input('telefone_comercial');
    $colaborador->email = $request->input('email');
    $colaborador->save();

    return "Sucesso atualizando Colaborador #" . $colaborador->id_colaborador;
}

public function remove(Request $request, $id_colaborador)
{   
    $colaborador = Colaborador::where("id_colaborador", $id_colaborador);

    $colaborador->delete();

    return "Colaborador #". $request->input('id_colaborador'). " excluido com sucesso!";
}

public function editar($id_colaborador)
{
    return Colaborador::where("id_colaborador", $id_colaborador);
}



}
?>

还有路由文件……

                                <?php

                        /*
                        |--------------------------------------------------------------------------
                        | Application Routes
                        |--------------------------------------------------------------------------
                        |
                        | Here is where you can register all of the routes for an application.
                        | It's a breeze. Simply tell Laravel the URIs it should respond to
                        | and give it the controller to call when that URI is requested.
                        |
                        */
                        Route::get("/colaboradores/gercolaboradores",
                                function() {
                                return view("/colaboradores/gerenciarcolaboradores");
                        });

                        Route::get("/api/v1/colaboradores/","Colaboradores@index");

                        Route::get("/api/v1/colaboradores/editar/{id_colaborador}","Colaboradores@editar");

                        Route::post('/api/v1/colaboradores/salvar/editar/{id_colaborador}',
                                    'Colaboradores@update');

                        Route::post('/api/v1/colaboradores/salvar',     'Colaboradores@salvar');

                                 Route::delete('/api/v1/colaboradores/remover/{id_colaborador}',                      'Colaboradores@remove');


                        ?>

【问题讨论】:

  • 请详细说明!什么样的错误? 500, 404 ?消息?使用网络控制台!
  • 可以添加 HTML 吗?此外,使用开发人员工具获取正确的调试信息。通常快捷键是 ctrl + shift + i
  • 对不起,错误是“GET localhost/crudtcc/public/api/v1/colaboradores/editar/3 500 (Internal Server Error)”
  • 这里是html文件pastebin.com/asSgzd15
  • 您能先检查一下您的应用程序日志吗?

标签: javascript php mysql angularjs laravel


【解决方案1】:

你应该在 Angular 端写下你的请求:

$http.post(API_URL + 'colaboradores/editar/' + id_colaborador, {YOUR_DATA})
                .success(function(response) {
                    console.log(response);
                    $scope.colaborador = response;
                });

并传递您要发送到后端的参数。 请参考:https://docs.angularjs.org/api/ng/service/$http。

说明: 您正在使用角度 GET

$http.get(API_URL + 'colaboradores/editar/' + id_colaborador)

你在 Laravel 中将你的路由定义为 POST

Route::post('/api/v1/colaboradores/salvar/editar/{id_colaborador}',
                                'Colaboradores@update');

GET 没有传递除槽 url 之外的任何数据,并且您正试图获取该数据,就好像您已通过 POST 请求发送它一样。 您可以在以下链接中找到有关 GET 和 POST 请求的简短说明:http://www.w3schools.com/tags/ref_httpmethods.aspWhat is the difference between POST and GET?

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2014-10-09
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2018-02-10
    • 2018-04-03
    相关资源
    最近更新 更多