2016-05-07 10 views
2

Ich brauche eine URL in iframe auf meiner eigenen Seite zu zeigen ... so schreibe ich:Encode URL und zeigen in iframe

Route::get('/preview/{url}', '[email protected]'); 

meine Reglerfunktion:

public function preview($url) { 

     $url = urlencode($url); 
      return view('pages.preview', compact('url')); 


    } 

und offcource meine Klinge Vorschau Seite (JavaScript):

function preview(){ 
    function autoResize(id){ 
    var newheight; 
    var newwidth; 

    if(document.getElementById){ 
     newheight = document.getElementById(id).contentWindow.document .body.scrollHeight; 
     newwidth = document.getElementById(id).contentWindow.document .body.scrollWidth; 
    } 

    document.getElementById(id).height = (newheight) + "px"; 
    document.getElementById(id).width = (newwidth) + "px"; 
}; 

    var content = '<iframe id="iframe2" src="{{$url}}" style="border:0px #FFFFFF none; position: relative;left: 0px;width: 100%; height:100%; top: 0;" name="myiFrame1" scrolling="yes" frameborder="0" marginheight="0px" marginwidth="0px" height="100%" width="100%" onLoad="autoResize(iframe1);"></iframe>'; 

var newNode = document.createElement("DIV"); 
newNode.innerHTML = content; 
document.body.appendChild(newNode); 


}; 

preview(); 

Jetzt, wenn ich versuche, so etwas wie:

http://localhost:8888/preview/http%3A%2F%2Fwww.dubaimajestic.com%2F

oder

http://localhost:8888/preview/http://www.dubaimajestic.com

ich:

Not Found The requested resource /preview/http%3A%2F%2Fwww.dubaimajestic.com%2F nicht auf diese gefunden wurde Server.

Wie man das zum ARBEITEN macht? Irgendwelche Ideen?

Antwort

1

Dies ist, weil http://www.dubaimajestic.com Schrägstriche hat, die nicht richtig mit dem Laravel-Router funktioniert.

Sie können Regular Expression Constraints verwenden dieses Verhalten wie folgt außer Kraft zu setzen:

Route::get('preview/{url}', '[email protected]')->where('url', '(.*)'); 

Und diese funktionieren sollte:

public function preview($url) { 
    dd($url); 
} 

Jedoch habe ich auf eine andere Art und Weise, weil ihr ein wenig sauberer meiner Meinung wechseln würden :

Route::get('preview', '[email protected]'); 

Formatieren Sie Ihre URL wie:

http://localhost:8888/preview?url=http://www.dubaimajestic.com

, die Sie mögen diese in Ihrem Controller lesen:

public function preview(Request $request) { 
    dd($request->input('url')); 
} 
1

Die / Laravel machen denken, dass ein Teil des Weges ist.

Ich würde vorschlagen, die URL einen Query-String-Parameter wie folgt zu machen:

http://localhost:8888/preview?url=http://www.dubaimajestic.com 

Und dann in Ihrem routes.php:

// Don't accept {url} as an argument 
Route::get('/preview', '[email protected]'); 

Und dann in Ihrem Controller:

public function preview() 
{ 
    $url = request()->url; 

    return view('pages.preview', compact('url')); 
} 

Das sollte funktionieren.