Удалить IP из ответа JSON в Laravel - PullRequest
0 голосов
/ 12 октября 2019

У меня есть остальные API в Laravel, как показано ниже:

{
    "id": 17,
    "title": "Devnet",
    "slug": "devnet",
    "content": "sfdf",
    "technology_id": 1,
    "image": "http://127.0.0.1:8000/uploads/posts/1570907475IMG_20171229_123822.jpg|uploads/posts/1570907475IMG_20171229_133927.jpg|uploads/posts/1570907475IMG_20180319_124721.jpg",
    "link": "https://www.somelink.com/in/test/",
    "deleted_at": null,
}

Мне нужно удалить локальный IP-адрес (127.0.0.1:8000) из всех ответов. Например, на рисунке у меня есть 3 файла, но в коде, который яВ настоящее время вы можете видеть 3 ссылки, и только одна из них имеет полный путь.

На самом деле в БД они не имеют полного пути. Все они размещены в БД без локального ip, как это uploads/posts/image_name.jpg. При создании моделиЯ проверяю с dd все мои изображения без локального ip (127.0.0.1:8000). Только uploads/posts/image_name.jpg.

Как хранить данные в БД в контроллере:

    $images = array();
    if ($files = $request->file('image')) {
        foreach ($files as $file) {
            $name =  "uploads/posts/" . time() . $file->getClientOriginalName();
            $file->move("uploads/posts", $name);
            $images[] = $name;
        }
    }

    // validating in here ..
    if I dd($images) in here it show me 3 array of images without local ip.

    $project= Project::create([
        "title" => $request->title,
        "content" => $request->content,
        'image' =>  implode("|", $images),
        "technology_id" => $request->technology_id,
        "slug" => str_slug($request->title),
        "tags" => "required",
        "link" => $request->link
    ]);

Также мой основной Controller, который возвращает json для просмотра ничего особенного.

public function index(){
    $result = Project::with('something','something')->get();
    return response()->json($result);
}

Модель проекта

class Project extends Model
{
    use SoftDeletes;

    protected $fillable = [
        "title","content","image","technology_id","link","slug"
    ];

    public function getImageAttribute($image){
        return asset($image);
    }
    protected $dates = ["deleted_at"];
}

1 Ответ

1 голос
/ 12 октября 2019

Эта функция доступа является вашим виновником:

public function getImageAttribute($image){
    return asset($image);
}

Функция asset возвращает абсолютный URL , и, кроме того, она не будет иметь никакой подсказкичто делать с вашим развернутым массивом изображений.

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