首页 > 解决方案 > 参数 1 在 Laravel 错误中传递。我不知道如何解决这个错误

问题描述

我目前正在使用语言检测和语言翻译 A​​PI。但是,这个在所有控制器上都运行良好但请求ajax的函数,与标题相同的错误。

阿贾克斯

$("#translationBtn").click(function(){
    $.ajax({
        url: '{{route('translation')}}',
        type: 'post',
        data: {_token: "{{ csrf_token() }}",
                'material': $('#translationBox').val(),
            },
        success: function (data) {

            alert(data);

        }, error: function () {
            alert("error!!!!");
        }
    });
});

控制器 控制器 检查通过 ajax 接收的值。

<?php

namespace App\Http\Controllers\Home;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Helper\Translation;

class TranslationController extends Controller
{
    use Translation;

    public function translation(Request $request){

       return $this->translation($request->material,$this>langCode($request->material));

    }
}

路线

Route::post('translation', 'Home\TranslationController@translation')- 
>name('translation');

API

<?php

namespace App\Http\Controllers\Helper;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

trait Translation 
{

     public static function langCode($papago){

        $client_id      =  config('papago.client_sening_id');
        $client_secret  =  config('papago.client_sening_secret');
        $encQuery = urlencode($papago);
        $postvars = "query=".$encQuery;
        $url = "https://openapi.naver.com/v1/papago/detectLangs";
        $is_post = true;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, $is_post);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
        $headers = array();
        $headers[] = "X-Naver-Client-Id: ".$client_id;
        $headers[] = "X-Naver-Client-Secret: ".$client_secret;
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec ($ch);
        $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        //   echo "status_code:".$status_code."<br>";
        curl_close ($ch);
        if($status_code == 200) {
            // echo $response['langCode'];
            $json = json_decode($response, true);
            $langCode = $json['langCode']; 
        } else {
            echo "점검 중";
            // echo "Error 내용:".$response;
        }
        return $langCode;    
    }

    public static function translation($papago,$langCode) {

          $client_id      = config('papago.client_language_translation_id');
          $client_secret  = config('papago.client_language_translation_secret');
          $encText = urlencode($papago);


          if($langCode == "ko"){
            $postvars = "source=ko&target=ja&text=".$encText;

          }else if($langCode == "ja"){
            $postvars = "source=ja&target=ko&text=".$encText;

          }else{
            $postvars = "source=ko&target=ja&text=".$encText;
          }

          $url = "https://openapi.naver.com/v1/language/translate";
          $is_post = true;
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_POST, $is_post);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
          $headers = array();
          $headers[] = "X-Naver-Client-Id: ".$client_id;
          $headers[] = "X-Naver-Client-Secret: ".$client_secret;
          curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
          $response = curl_exec ($ch);
          $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
          //   echo "status_code:".$status_code."<br>";
          curl_close ($ch);

          if($status_code == 200) {  
            $json = json_decode($response, true);   //json_decode는  디코딩 된 json문자열을 연관배열로 만든다.
            $translation = $json['message']['result']['translatedText']; 

        } else {
            $translation = '점검 중';
            //   echo "Error 내용:".$response;
          }
          return  $translation;
    }
}

我正在制作一个迷你翻译器,它奏效了。但这行不通。我无法弄清楚我的方式有什么问题。只是

传递给 App\Http\Controller\Home\TranslationController::translation() 的参数 1 必须是 Illuminate\Http\Request 的实例,字符串 Given,在 C:xampp\Helmer\Helabor\Projectment 中调用 1 传递给 App\Http\ Controller\Home\TranslationController::translation() 必须是 Illuminate\Http\Request 的实例,字符串 Given,在\xperms\Project\triler.php:14 中调用)

我不知道这个错误。

标签: phplaravel

解决方案


translationClass TranslationController和中使用函数名称Trait Translation。一个是static,另一个是instance。调用instance方法而不是static. 最好使用不同的名称以避免混淆。

您当前的代码正在执行递归,甚至没有使用 trait 方法。

将特征方法重命名为其他名称并尝试。


推荐阅读