Profil düzenleme kısmı ne zaman eklenir?
@goxaria Hocam bu laravelle alakalı değil, isteklerde post,get,delete,put... gibi bir çok method bulunur. Bunlar düşündüğünüz gibi çalışmaz.
Sizin orada delete işlemi attığınızda insert işlemi yaptığınızı sistem nasıl anlayabilir ki? Hiçbir işlemde hiçbir hatayı almazsınız merak etmeyin.
Evet delete kullanmanız daha doğru olucak fakat performans açısınıdan bu daha kaliteli olacağı için ben bunu tercih ediyorum şahsen
Buraya bir kaynak bırakıyorum. İçindeki birkaç makale gayet iyi.
Derseniz ben aynı kodlarla nasıl delete yaparım? Buyrun;
$(document).on('click','a[data-action=like]',function(e){
e.preventDefault()
var this = $(this);
var id = this.data('id');
$.ajax({
data : {id:id},
url : '/api/like',
method : 'POST',
dataType : 'JSON',
success : function(response){
this.html('Beğenme')
this.data('action','unlike')
}
})
})
$(document).on('click','a[data-action=unlike]',function(e){
e.preventDefault()
var this = $(this);
var id = this.data('id');
$.ajax({
data : {id:id},
url : '/api/like',
method : 'DELETE',
dataType : 'JSON',
success : function(response){
this.html('Beğen')
this.data('action','like')
}
})
})
Tek fonskyonda yazmak isterseniz;
$(document).on('click','a[data-action]',function(e){
e.preventDefault()
var this = $(this);
var id = this.data('id');
var action = this.data('action')
if(action == 'like'){
var method = 'POST'
}else {
var method = 'DELETE'
}
$.ajax({
data : {id:id},
url : '/api/like',
method : method,
dataType : 'JSON',
success : function(response){
if(response.status == 1){
this.html('Beğen')
this.data('action','like')
}else {
this.html('Beğenme')
this.data('action','unlike')
}
}
})
})
Öncelikle tıklandıkça bir butonun gitmesi, diğer butonun gelmesi hatalı. Aynı buton aynı yere post atabilir. Post işlemi gelince veritabanından beğenmiş mi diye kontrol
edip öyle işlem yapmalısınız. Örnedğim;
$(document).on('click','a[data-action=like]',function(e){
e.preventDefault()
var this = $(this);
var id = this.data('id');
$.ajax({
data : {id:id},
url : '/api/like',
method : 'POST',
dataType : 'JSON',
success : function(response){
if(response.status == 1){
this.html('Beğen')
}else {
this.html('Beğenme')
}
}
})
})
...
public function like(Request $request){
$data = likes::find($request->id);
if($data){
$data->delete()
response()->json(['status'=>1])
}else {
likes::insert(['post_id' => $request->id,'user_id' => Auth::user()->id]);
response()->json(['status'=>0])
}
}
Umarım yardımcı olucaktır.
Edit: Veri tabanınızın like sistemi için bu yapıda olmasını tavsiye etmem json formatı daha avantajlı olacaktır.
<!-- Router.php -->
$router->get('/', 'users');
<!-- In Class -->
<!--
Class users olucak burada değişkenden alıcaksınız
Page ise şuanki sayfa olucak. Burada users classına mesela /users sayfasındaysa users fonskyonu çağırabilir mi diye bakıcaz
Çağırılamaz ise yoktur varsa çağırabilir.
-->
is_callable([$class,page]){
call_user_func($class . '::' . $page);
}else {
die('Controller Bulunamadı')
}
Burada
ini_set('max_execution_time', 0)
Dener misiniz.
Edit: Bunu da inceler misiniz emin olamadım ama işinize yarayabilir.
$(function(){
$("#data2").click(function(){
var item = $("div").load("demo.txt #data2");
$('#yazinin_gösterleceği_yer').html(item)
});
});
Fakat bunu önermem bir json dosyası tutup json ile çalışırsanız çok daha avantajlı olur.
Öncelikle ajaxda hem csrf için header verip hem de data olarak _token vermenize gerek yok. Sadece birisi yeterli olacaktur. Onuda 2 fonskyona yazmanıza gerek yok fonskyon dışı bir yerde yazsanız yeterli olacaktır. Ve hatanızı net bir şekilde anlayamadım biraz açıklayabilirmisiniz?
Sorun beğendikten sonra sil dediğini düşünürsek, bir kez daha sile tıklarsa oluşan hata mı?
Hocam siteyi atar mısınız? Birde csrf açığını kapatmış olabilirler çünkü kullandığınız şey bir güvenlik açığı sonuçta.
@theviper arkadaşın örneği istediğiniz gibi duruyor;
foreach($items as $item){
$_val = $item[$item['sec']];
echo $_val;
}
VsCode üzerinde Alt+R tuşu ile arama(Ctrl + F) yaparken regex kullanımını etkinleştirebilirsiniz. Sonrada arama kısmına;
href="(.*)"
Şeklinde yazarsanız hepsi seçilir.