Аргумент 1 принят в Laravel ошибка. Я не знаю, как решить эту ошибку - PullRequest
0 голосов
/ 04 июня 2019

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

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!!!!");
        }
    });
});

Controller Значение, полученное через 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;
    }
}

Я делаю мини-переводчик, и это сработало.Но это не работает.Я не могу понять, что не так с моим путем.Просто

Аргумент 1, передаваемый в App \ Http \ Controller \ Home \ TranslationController :: translation (), должен быть экземпляром 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)

Я не знаю этой ошибки.

1 Ответ

1 голос
/ 04 июня 2019

Вы используете имя функции translation в Class TranslationController и Trait Translation. Один - static, а другой - instance. Вызов метода instance вместо static. Лучше использовать другое имя, чтобы избежать путаницы.

Ваш текущий код выполняет рекурсию и даже не собирается использовать метод черты.

Переименуйте метод черты во что-то другое и попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...